2013-07-11 161 views
1

我为程序创建了编码,以检查数据库中是否存在表。但是它在编码中一直强调限制。 错误23类型'字符串'的值不能被转换为'字符串的1维数组' 你能告诉我我做错了什么,并检查我的其他编码是否正确。检查数据库是否包含表

这里是编码:

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 

感谢您给

+0

Pastel_Companies是表的名字 – user2564223

回答

1

正确的语法来调用GetSchema如下

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

第一个参数是要检查对象存在的集合(在你的如果您想检查TABLES集合)
第二个参数包含一组限制条件。该数组在您要搜索的集合后更改。对于TABLES系列,您应该应用databaseownertablename三个限制。
这些限制应该按预期的顺序出现,如果你没有指定你传递一个空值的值(VB中没有)

+0

谢谢,真的有帮助,它作品:)!我我可以投票你回答我会:) – user2564223

0

的提供了一个相当不错的线索任何帮助;您将字符串作为第二个参数传递给GetSchema而不是一维字符串数组。

试试这个:

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