2013-07-11 226 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)