检查数据库是否包含表

时间:2013-07-11 11:25:15

标签: sql vb.net

我创建了一个程序的编码来检查数据库中是否存在表。但它一直强调编码中的限制。 错误23'String'类型的值无法转换为'1维数组String' 你能否告诉我我做错了什么,并检查我的其余编码是否正确。

以下是编码:

    Dim cn As New SqlClient.SqlConnection(SQL_Loader("", My.Settings.SQL_Win_Auth, _
         My.Settings.SQL_Username, My.Settings.SQL_Password, My.Settings.SQL_Server_Name, _
         My.Settings.SQL_DB_Name))
    Dim Cmd As New SqlClient.SqlCommand
    Dim Reader As SqlClient.SqlDataReader

    Cmd.Connection = cn

    cn.Open()

    Dim restrictions As String
    restrictions = "Pastel_Companies"
    Dim dbTbl As DataTable = cn.GetSchema("Pastel_Companies", restrictions)

    If dbTbl.Rows.Count = 0 Then
        MessageBox.Show("Table Does Not Exist")
    Else
        MessageBox.Show("Table exists")
    End If

感谢您提供任何帮助

2 个答案:

答案 0 :(得分:1)

调用GetSchema的正确语法如下

Dim restrictions As String() = new String() {Nothing, Nothing, "Pastel_Companies"}
Dim dbTbl As DataTable = cn.GetSchema("TABLES", restrictions)

第一个参数是您要检查对象是否存在的集合(在您的情况下,您要检查TABLES集合)
第二个参数包含一系列限制。此数组在您要搜索的集合后更改。对于TABLES集合,您应该应用三个限制databaseownertablename
限制应按预期的确切顺序出现,如果您没有指定值,则传递空值(VB中为Nothing)

答案 1 :(得分:0)

提供了很好的线索;你将一个字符串作为第二个参数传递给GetSchema而不是一维字符串数组。

试试这个:

Dim restrictions() as string = { Nothing, Nothing, "Pastel_Companies" }
Dim dbTbl As DataTable = cn.GetSchema("Tables", restrictions)