如何获取ADO连接的所有的表名?

lyqof908 2002-09-24 02:18:08
例:
Dim MyDB As New ADODB.Connection
MyDB.open "DSN=ODBCNAME;UID=SA;PWD=;"

如何枚举MyDB所打开的数据库共有哪些用户表呢?
...全文
215 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolsky 2002-09-24
  • 打赏
  • 举报
回复
sqlserver中:
select Name from sysobjects where type ='u'

或者使用cn.openSchema
access:
openschema

参数上面都说过了。
fraser01 2002-09-24
  • 打赏
  • 举报
回复
采用ADO连接后,使用如下SQL语句可获得所有的表名:
Select * from Information_Schema.Tables
执行上述SQL语句可获得你想要的所有表名。
jiniang 2002-09-24
  • 打赏
  • 举报
回复
这是显示access的所有表
Dim cnn As New Connection
Dim rs As Recordset

cnn.Provider = "Microsoft.JET.OLEDB.4.0"
cnn.Open "C:\WINDOWS\Desktop\EMP\EMPDB.mdb"
Set rs = cnn.OpenSchema(adSchemaTables)
rs.MoveFirst
While rs.EOF = False
If rs("TABLE_TYPE") = "TABLE" Then Debug.Print rs("TABLE_NAME")
rs.MoveNext
Wend
rs.Close
lyqof908 2002-09-24
  • 打赏
  • 举报
回复
多谢!
为程序员欢呼!

water_j 2002-09-24
  • 打赏
  • 举报
回复
OpenSchema 方法


从提供者获取数据库模式信息。

语法

Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)

返回值

返回包含模式信息的 Recordset 对象。Recordset 将以只读、静态游标打开。

参数

QueryType 所要运行的模式查询类型,可以为下列任意常量。

Criteria 可选。每个 QueryType 选项的查询限制条件数组,如下所列:

QueryType 值 Criteria 值
AdSchemaAsserts CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
AdSchemaCatalogs CATALOG_NAME
AdSchemaCharacterSets CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
AdSchemaCheckConstraints CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
AdSchemaCollations COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME
AdSchemaColumnDomainUsage DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
COLUMN_NAME
AdSchemaColumnPrivileges TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
GRANTOR
GRANTEE
adSchemaColumns TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
adSchemaConstraintColumnUsage TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
adSchemaConstraintTableUsage TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
adSchemaForeignKeys PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME
FK_TABLE_CATALOG
FK_TABLE_SCHEMA
FK_TABLE_NAME
adSchemaIndexes TABLE_CATALOG
TABLE_SCHEMA
INDEX_NAME
TYPE
TABLE_NAME
adSchemaKeyColumnUsage CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
adSchemaPrimaryKeys PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME
adSchemaProcedureColumns PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
COLUMN_NAME
adSchemaProcedureParameters PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PARAMTER_NAME
adSchemaProcedures PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PROCEDURE_TYPE
adSchemaProviderSpecific 参见说明
adSchemaProviderTypes DATA_TYPE
BEST_MATCH
adSchemaReferentialConstraints CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
adSchemaSchemata CATALOG_NAME
SCHEMA_NAME
SCHEMA_OWNER
adSchemaSQLLanguages <无>
adSchemaStatistics TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
adSchemaTableConstraints CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
CONSTRAINT_TYPE
adSchemaTablePrivileges TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
GRANTOR
GRANTEE
adSchemaTables TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
TABLE_TYPE
adSchemaTranslations TRANSLATION_CATALOG
TRANSLATION_SCHEMA
TRANSLATION_NAME
adSchemaUsagePrivileges OBJECT_CATALOG
OBJECT_SCHEMA
OBJECT_NAME
OBJECT_TYPE
GRANTOR
GRANTEE
adSchemaViewColumnUsage VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME
adSchemaViewTableUsage VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME
adSchemaViews TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME


SchemaID OLE DB 规范没有定义用于提供者模式查询的 GUID。如果 QueryType 设置为 adSchemaProviderSpecific,则需要该参数,否则不使用它。

说明

OpenSchema 方法返回与数据源有关的信息,例如关于服务器上的表以及表中的列等信息。

Criteria 参数是可用于限制模式查询结果的值数组。每个模式查询有它支持的不同参数集。实际模式由 IDBSchemaRowset 接口下的 OLE DB 规范定义。ADO 中所支持的参数集已在上面列出。

如果提供者定义未在上面列出的非标准模式查询,则常量 adSchemaProviderSpecific 将用于 QueryType 参数。在使用该常量时需要 SchemaID 参数传递模式查询的 GUID 以用于执行。如果 QueryType 设置为 adSchemaProviderSpecific 但是没有提供 SchemaID,将导致错误。

提供者不需要支持所有的 OLE DB 标准模式查询,只有 adSchemaTables、adSchemaColumns 和 adSchemaProviderTypes 是 OLE DB 规范需要的。但是对于这些模式查询,提供者不需要支持上面列出的 Criteria 条件约束。

远程数据服务用法 OpenSchema 方法在客户端 Connection 对象上无效。

注意 在 Visual Basic 中,在由 Connection 对象的 OpenSchema 方法所返回的 Recordset 中有 4 字节无符号整型 (DBTYPE UI4) 的列无法与其他变量比较。有关 OLE DB 数据类型的详细信息,请参阅“Microsoft OLE DB 程序员参考”的第十章和附录 A。

OpenSchema 方法范例
该范例使用 OpenSchema 方法显示 Pubs 数据库内每个表的名称和类型。

Public Sub OpenSchemaX()

Dim cnn1 As ADODB.Connection
Dim rstSchema As ADODB.Recordset
Dim strCnn As String

Set cnn1 = New ADODB.Connection
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
cnn1.Open strCnn

Set rstSchema = cnn1.OpenSchema(adSchemaTables)

Do Until rstSchema.EOF
Debug.Print "Table name: " & _
rstSchema!TABLE_NAME & vbCr & _
"Table type: " & rstSchema!TABLE_TYPE & vbCr
rstSchema.MoveNext
Loop
rstSchema.Close

cnn1.Close

End Sub


gundam_king 2002-09-24
  • 打赏
  • 举报
回复
不同的数据库有不同的系统表查一下就可以得到了
如oracle中用select table_name from user_tables可以得到。
DragonFly_1976 2002-09-24
  • 打赏
  • 举报
回复
数据库类型是:Access,sqlserver 还是oracle?
开发思路: 使用ADO通过ODBC链接进行Louts数据读取,在建立一个与SQL server数据库相连的ADO,将读取数据写入SQL server数据库。 安装环境: 首先安装lotus_notes853_win_SC(lotus客户端软件) 然后安装LOTUS_NOTES_SQL_853_W32_CIC6PEN(顺序好像有关系,win8.1安装64位不能正常使用,一定要安装32位的) 数据库连接: 先通过lotus客户端软件连接登陆成功,需要admin.id文件 通过ODBC 数据源(32 位) 添加 Lotus Notes SQL Driver(*.nsf)数据源,选择自己的loust数据库文件.nsf delphi ADO控件通过ODBC Drivers直接连接,本程序中用例名设置为LotusOA,每次连接需要输入lotus密码,其他开发这里就不在介绍可以看源代码 delphi ADO控件连接自己本地的SQL Server数据库,程序下载后自己修改 软件使用: 1、配置:通过config.ini修改LOTUSCONN,即LotusOA设置为自己的建立ODBC的名字,关系数据库修改DBCONN,本例中为SQLServer数据库 2、启动程序,点“数据源链接”,程序连接到lotus数据库和Sql server数据库 设置原始表名:通过lotus设计程序中的试图中可以看到,大部分是fm_Main,设置创建表名用于数据导出的表 3、获取表字段,会读处lotus数据的所有表名,自动目标生成表创建的sql语句,默认字段长度都是254,如需要可以自己修改 4、点“创建表”按钮,如果已创建了不要再点这个按钮 5、点“导出数据”,程序开始自动导出数据 如果目标数据库是其他类型数据库,可自己通过配置文件config.ini中的DBCONN进行修改 lotus导入关系数据库的资源一直很难找,自己的一点拙见,希望对大家有用。

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧