【问题标题】:How to retrieve Ms access tables names from specific database using SQL in VB.NET如何在 VB.NET 中使用 SQL 从特定数据库中检索 Ms 访问表名称
【发布时间】:2023-03-15 10:45:01
【问题描述】:

每当我想从特定的 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

我总是遇到这个异常:

“msysobjects”没有读取权限

我的目的是在组合框中显示表名 谢谢

【问题讨论】:

  • 如果您有新问题,请以new question 的形式提出。收到有用的有效答案后,请勿更改此选项。感谢您的合作。

标签: c# vb.net ms-access ms-access-2010


【解决方案1】:

您不需要直接访问系统表。您可以使用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())

【讨论】:

  • 嗨戈德汤普森,谢谢你的回答。我真的想通知你我已经编辑了我的帖子。谢谢你。最好的问候
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 2023-04-04
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多