我创建了一个程序的编码来检查数据库中是否存在表。但它一直强调编码中的限制。 错误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
感谢您提供任何帮助
答案 0 :(得分:1)
调用GetSchema的正确语法如下
Dim restrictions As String() = new String() {Nothing, Nothing, "Pastel_Companies"}
Dim dbTbl As DataTable = cn.GetSchema("TABLES", restrictions)
第一个参数是您要检查对象是否存在的集合(在您的情况下,您要检查TABLES
集合)
第二个参数包含一系列限制。此数组在您要搜索的集合后更改。对于TABLES
集合,您应该应用三个限制database
,owner
和tablename
。
限制应按预期的确切顺序出现,如果您没有指定值,则传递空值(VB中为Nothing)
答案 1 :(得分:0)
提供了很好的线索;你将一个字符串作为第二个参数传递给GetSchema而不是一维字符串数组。
试试这个:
Dim restrictions() as string = { Nothing, Nothing, "Pastel_Companies" }
Dim dbTbl As DataTable = cn.GetSchema("Tables", restrictions)