如何在VB.NET中使用SQL从特定数据库中检索MS Access表名称 [英] How to retrieve Ms access tables names from specific database using SQL in VB.NET
本文介绍了如何在VB.NET中使用SQL从特定数据库中检索MS Access表名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
每当我要从特定的MS Access 2007数据库中选择表名时,我都会使用以下SQL请求:
SELECT name from msysobjects WHERE type=1 and flags=0
我的VB.NET源代码:
Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
"Data Source=" & Text1.Text
Connection.Open()
' sql = "SELECT MSysObjects.Name AS table_name FROM MSysObjects"
sql = "SELECT name from msysobjects WHERE Type = 1 And flags = 0"
Dim commande As OleDbCommand
commande = New OleDbCommand(sql, Connection)
Dim dataReader As OleDbDataReader
Try
dataReader = commande.ExecuteReader()
While (dataReader.Read())
tableNameBox.Text = dataReader.GetString(0)
End While
Catch ex As Exception
MsgBox("Problème de connection " & ex.Message())
End Try
我总是收到此异常:
我的目的是在comboBox中显示表名 谢谢您对‘msysobjects’没有读取权限
推荐答案
您不需要直接访问系统表。您可以使用GetSchema
方法来检索该信息。例如,要检索"常规"(非系统)表的列表,可以使用以下命令:
Using conn As New OleDbConnection(myConnectionString)
conn.Open()
Dim dt As DataTable = conn.GetSchema("TABLES", {Nothing, Nothing, Nothing, "TABLE"})
For Each dr As DataRow In dt.Rows
Console.WriteLine(dr("TABLE_NAME"))
Next
End Using
有关详细信息,请参阅
OleDbConnection.GetSchema Method (String, String())
这篇关于如何在VB.NET中使用SQL从特定数据库中检索MS Access表名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文