2013-07-11 8 views
1

Я создал кодировку для программы, чтобы проверить, существует ли таблица в базе данных. Но он продолжает подчеркивать ограничения в кодировании. Ошибка 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

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 вы должны применить три ограничения: database, owner и tablename.
ограничения должны появляться в том же порядке, как ожидается, и если вы не имеете значение, чтобы указать вам не передать нулевое значение (Nothing в VB)

+0

Спасибо вам, что действительно помогло и это работает:)! Я мог бы проголосовать за ответ, я бы :) – user2564223

0

предлагает довольно хороший ключ; вы передаете строку в качестве второго аргумента в GetSchema вместо одномерного массива строк.

Попробуйте это:

Dim restrictions() as string = { Nothing, Nothing, "Pastel_Companies" } 
Dim dbTbl As DataTable = cn.GetSchema("Tables", restrictions) 
Смежные вопросы