vb如何获取access数据库的所有表和字段名??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb如何获取access数据库的所有表和字段名??相关的知识,希望对你有一定的参考价值。

db1.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=新_数据库.accdb;Persist Security Info=False"
rs1.ActiveConnection = db2
如何获取表和字段的个数及所有的名称??

给LZ一个代码可以搜索ACCESS数据库内所有表名的代码。

Option Explicit
    Dim TableSet As ADODB.Recordset
    Dim Gconnection As ADODB.Connection
    Dim lianjie As String

Sub getTableName()
    lianjie = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=J:\\LDGZ\\南汇40M^2New\\ldgz30_wd20100205N19200\\Data\\wdold.mdb;Persist Security Info=False"
    Set Gconnection = New ADODB.Connection
    Gconnection.Open lianjie
    Set TableSet = Gconnection.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, Empty))
    Do Until TableSet.EOF
         List1.AddItem TableSet!table_name
         TableSet.MoveNext
    Loop
End Sub

Private Sub Form_Load()
    getTableName
End Sub

 LZ可以将lianjie变量以你自己的连接字符串替代。我这里是用ACCESS7的数据库。

再给LZ提供一个链接

http://wenku.baidu.com/link?url=mrzZ5qZqgO9tJP_hPOhXDWfKxqHRWhnAK6wxmOgtOzRpK3985pemcpY62rP4ZgUw7a3A_YMjdchndOwxPXnP9DywaayDsX6Ta_DkknVXroq

是关于获取“

VB 读取ACCESS数据库中所有表名及指定表的字段名

“的Word文件。

参考技术A 楼主可以访问本人的百度空间文章 “VB将ACCESS数据库中的所有表名加载到列表框里”。那里列举了两种解决方案及有关代码,相信能帮到你。

获取某张表的所有字段名可以参考我的以下知道回答
http://zhidao.baidu.com/question/1239443077603133139.html?oldq=1追问

太感谢了!
rs1.ActiveConnection = db2,这句是干什么的,不要也行是吧?

追答

设置记录集rs1引用db2的连接,应该是dao的方法比较古老了,不要理它改用新一点的ADO吧

本回答被提问者采纳
参考技术B

Connection.OpenSchema  adSchemaTables adSchemaColumns

====================================================

具体实现代码:

Private Sub Command1_Click()
    Dim cnn As Object
    
    Const adSchemaTables = 20
    Const adSchemaColumns = 4
    
    Set cnn = CreateObject("adodb.connection")
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\test.mdb';Persist Security Info=False"
    Set rds = cnn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "Table"))
    Debug.Print "Table_Name", "Column_Name"
    Do Until rds.EOF
        Table_name = rds!Table_name
        Set temp = cnn.OpenSchema(adSchemaColumns, Array(Empty, Empty, Table_name))
        Do Until temp.EOF
            Debug.Print Table_name, temp!Column_Name
            temp.MoveNext
        Loop
        rds.MoveNext
    Loop
    
    rds.Close
    temp.Close
    cnn.Close
End Sub

参考技术C 引用方法:
引用ADO—— 菜单"工程"-> "引用 "-->勾选 Microsoft ActiveX Data Objects 2.1 Library 或更高版本,点击确定按钮。

方法一
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.0;Data Source=" & App.Path & "\MyAccess.mdb;Persist 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.0;Data Source=" & App.Path & "\db1.mdb;Persist 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

MySQL查询数据库中的表和字段

查询数据库中所有表名

        select table_name
        from information_schema.tables
        where table_schema = '数据库名'
          and table_type = 'BASE TABLE'

查询数据库中指定表的所有字段名

        select column_name
        from information_schema.columns
        where table_schema = '数据库名'
          and table_name = '表名'

查询包含某个字段的所有表名

        select table_name
        from information_schema.columns
        where table_schema = '数据库名'
          and table_name in
              (select table_name
               from information_schema.tables
               where table_schema = '数据库名'
                 and table_type = 'BASE TABLE')
          and column_name = '字段名'

以上是关于vb如何获取access数据库的所有表和字段名??的主要内容,如果未能解决你的问题,请参考以下文章

我想用VB的文本框显示access数据库某行某列的一个数据,该怎么做?

java中如何获取我在ACCESS数据库中查询到的某个字段所对应的主键的值?

如何查询oracle中的所有表和视图

VB中多个模式的SQL查询

MYSQL查询全部表和表所有字段

engine如何实现按字段属性选择要素