Драйвер SQLite3 ODBC с ошибками VB6

Я использую драйвер SQLite ODBC (отсюда http://www.ch-werner.de/sqliteodbc/) с моим приложением VB6. Однако все работает нормально, что касается извлечения и сохранения данных, если я попытаюсь получить список столбцов таблицы с помощью следующей команды:

pragma table_info (myTableName)

Вызов ADO завершается с ошибкой 2 (обнаружено в свойстве Connection.Errors).

Ошибка № 1: Описание: «Многоэтапная операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Никаких действий выполнено не было». : Строка : cMisDataLayer.ExecuteRecordset

Ошибка №2: Описание: «Поставщик не поддерживает свойство». : Строка : cMisDataLayer.ExecuteRecordset

Мой вопрос: почему я получаю эту ошибку и есть ли обходной путь для получения списка столбцов для таблицы в SQLite?

Спасибо.


person AngryHacker    schedule 07.04.2009    source источник


Ответы (3)


Почему бы просто не использовать коллекцию ADO RecordSet Fields? Просто выполните SELECT * FROM table WHERE 1=0. Когда ADO получает набор результатов, он также возвращает всю информацию о столбцах.

Private Sub cmdTest_Click()

   Dim conTest As ADODB.Connection
   Dim cmdTest As ADODB.Command
   Dim rstResults As ADODB.Recordset
   Dim fldCurrent As ADODB.Field

   Set conTest = New ADODB.Connection
   conTest.ConnectionString = "whatever your connection string is"
   conTest.Open

   Set cmdTest = New ADODB.Command
   cmdTest.CommandType = adCmdText
   cmdTest.CommandTimeout = 30
   cmdTest.CommandText = "SELECT * FROM myTableName WHERE 1=0"

   cmdTest.ActiveConnection = conTest
   Set rstResults = cmdTest.Execute()

   For Each fldCurrent In rstResults.Fields

      Debug.Print fldCurrent.Name & " " & CStr(fldCurrent.Type)

   Next fldCurrent

End Sub
person Will Rickards    schedule 07.04.2009

Хотя я не работал с SQLite ODBC, я думаю, вы можете сделать библиотеку ADOX, которая, я думаю, используется для получения информации о схеме из базы данных.

Эта страница может помочь.

person shahkalpeshp    schedule 07.04.2009

Может помочь проверка того, используете ли вы версию драйвера SQLite ODBC для Win32 или Win64.

person Arda Basoglu    schedule 04.12.2010