vb如何获取access数据库的所有表和字段名??
db1.Open"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=新_数据库.accdb;PersistSecurityInfo...
db1.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=新_数据库.accdb;Persist Security Info=False"
rs1.ActiveConnection = db2
如何获取表和字段的个数及所有的名称?? 展开
rs1.ActiveConnection = db2
如何获取表和字段的个数及所有的名称?? 展开
4个回答
展开全部
给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提供一个链接
是关于获取“
VB 读取ACCESS数据库中所有表名及指定表的字段名
“的Word文件。
展开全部
楼主可以访问本人的百度空间文章 “VB将ACCESS数据库中的所有表名加载到列表框里”。那里列举了两种解决方案及有关代码,相信能帮到你。
获取某张表的所有字段名可以参考我的以下知道回答
http://zhidao.baidu.com/question/1239443077603133139.html?oldq=1
获取某张表的所有字段名可以参考我的以下知道回答
http://zhidao.baidu.com/question/1239443077603133139.html?oldq=1
追问
太感谢了!
rs1.ActiveConnection = db2,这句是干什么的,不要也行是吧?
追答
设置记录集rs1引用db2的连接,应该是dao的方法比较古老了,不要理它改用新一点的ADO吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
引用方法:
引用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
引用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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询