如何在VB.NET中使用SQL从特定数据库中检索MS Access表名称 [英] How to retrieve Ms access tables names from specific database using SQL in VB.NET

查看:0
本文介绍了如何在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

我总是收到此异常:

对‘msysobjects’没有读取权限

我的目的是在comboBox中显示表名 谢谢您

推荐答案

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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆