1

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

这是编码:

    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

感谢您提供的任何帮助

4

2 回答 2

1

调用GetSchema的正确语法如下

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

第一个参数是您要检查对象是否存在的集合(在您的情况下,您要检查TABLES集合)
第二个参数包含一个限制数组。此数组会随着您要搜索的集合而变化。对于TABLES集合,您应该应用三个限制databaseowner并且tablename
限制应按预期的确切顺序出现,如果您没有指定值,则传递一个空值(VB 中没有)

于 2013-07-11T11:39:00.407 回答
0

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

尝试这个:

Dim restrictions() as string = { Nothing, Nothing, "Pastel_Companies" }
Dim dbTbl As DataTable = cn.GetSchema("Tables", restrictions)
于 2013-07-11T11:37:41.923 回答