vb获取access数据库表名

vb获取access数据库表名,第1张

推荐两种方法给你,下面两个例子都可以将ACCESS数据库中的全部表名写入列表框,请更换为实际数据库路径名,供楼主参考

方法一

Private Sub Form_Load()

Dim cn As New ADODB.Connection '声明并实例化一个ADO连接对象

Dim cnStr As String '声明一个连接字符串变量

Dim rsSchema As New ADODB.Recordset '声明并实例化一个记录集对象

'设置连接当前目录下“MyAccess.mdb”之连接字符串

cnStr = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &App.Path &"\MyAccess.mdbPersist Security Info=False"

cn.Open cnStr '打开与该数据库的连接

Set rsSchema = cn.OpenSchema(adSchemaTables) '打开数据库所有表记录集

'循环将所有表名逐个写入列表框

Do Until rsSchema.EOF

If rsSchema!TABLE_TYPE = "TABLE" Then

List1.AddItem rsSchema!TABLE_NAME

End If

rsSchema.MoveNext

Loop

rsSchema.Close '关闭记录集

Set rsSchema= Nothing '释放记录集对象

cn.Close '关闭连接

Set cn = Nothing '释放连接对象

End Sub

方法二(

ACCESS数据库系统表"MsysObjects"里存放着所有数据表的资料,但是其访问权限默认为不开放。如果不嫌设置ACCESS数据库系统表权限麻烦,下列VB代码可以直接读取"MsysObjects"里记载的已保存表名信息,并于窗体加载时将得到的全部表名写入列表框里。

首先要设置读取ACCESS数据库系统表"MsysObjects"的权限,方法如下:

打开ACCESS数据库-->菜单-->工具-->选项 打开选项对话框,于视图选项卡 勾选“系统对象”点击“确定”按钮;

跟着,菜单-->工具-->安全-->用户与组权限 打开“用户与组权限”对话框,于权限选项卡 选择 “管理员、"MsysObjects"表 于权限框勾选“读取数据”点击“确定”按钮。

***注意为了确保ACCESS数据库的安全,设置完权限后,应将系统对象重新隐藏。

菜单-->工具-->选项 打开选项对话框,于视图选项卡 取消勾选“系统对象”

点击“确定”按钮。

Private Sub Form_Load()

Dim cn As New ADODB.Connection '声明并实例化一个ADO连接对象

Dim cnStr As String '声明一个连接字符串变量

Dim rs As New ADODB.Recordset '声明并实例化一个记录集对象

Dim sqlStr As String '声明一个SQL查询字符串变量

'设置连接当前目录下“MyAccess.mdb”之连接字符串

cnStr = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &App.Path &"\MyAccess.mdbPersist Security Info=False"

cn.Open cnStr '打开与该数据库的连接

rs.CursorLocation = adUseClient '设置为客户端游标

'设置查询表名列表之SQL语句

sqlStr = "select Name from MsysObjects where type=1 and Flags=0"

rs.Open sqlStr, cn '打开数据库表记录集

'因为直接读取“MsysObjects“得到的表名列表秩序混乱,故这里强制对表名进行排序

rs.Sort = "Name ASC"

'循环逐个将表名放置到列表框里

Do Until rs.EOF

List1.AddItem rs!Name

rs.MoveNext

Loop

rs.Close '关闭记录集

Set rs = Nothing '释放记录集对象

cn.Close '关闭连接

Set cn = Nothing '释放连接对象

End Sub

以上内容源自本人百度空间文章http://hi.baidu.com/tjrmgs/item/ca62e6386f9519c81a96965a

Sub getTableName()

Dim RS As ADODB.Recordset

Dim CN As ADODB.Connection

Set CN = New ADODB.Connection

CN.Open "Provider=Microsoft.Jet.OLEDB.4.0Data Source=Access数据库名.mdbPersist Security Info=False"

Set RS = CN.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, Empty))

Do Until RS.EOF

If Left(RS!table_name, 4) <>"MSys" Then

List1.AddItem RS!table_name

End If

RS.MoveNext

Loop

RS.Close

Set RS = Nothing

CN.Close

Set CN = Nothing

End Sub

Sub getFieldName()

Dim RS As ADODB.Recordset

Dim CN As ADODB.Connection

Dim FN As ADODB.Field

Set CN = New ADODB.Connection

Set RS = New ADODB.Recordset

CN.Open "Provider=Microsoft.Jet.OLEDB.4.0Data Source=access.mdbPersist Security Info=False"

RS.Open "表名", CN

For Each FN In RS.Fields

List2.AddItem FN.Name

Next

RS.Close

Set RS = Nothing

CN.Close

Set CN = Nothing

End Sub

VB读取数据库并显示出来的方法可参考下面用控件的实现方法:

ACCESS数据库,用VB6里的Data控件,选中它,设置属性:

DatabaseName 属性:连接到数据库文件

RecordSource 属性:连接数据表(可以用Select语句返回记录集)

然后使用它的:data1.Recordset.Fields(“字段名”),就可以返回获得你说的内容了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10840640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存