2009-04-07 12 views
0

VB6アプリケーションでSQLite ODBCドライバ(ここではhttp://www.ch-werner.de/sqliteodbc/)を使用しています。すべては私の知る限り、次のコマンドを使用して、表の列のリストを取得しようとした場合、しかし、取得したデータを保存するなど、正常に動作します:VB6エラーを伴うSQLite3 ODBCドライバ

pragma table_info (myTableName) 

ADOコールは2つのエラーで失敗する(Connection.Errorsプロパティで見つかりました)

エラー#1:説明: "複数ステップのOLE DB操作でエラーが発生しました。使用可能な場合は、各OLE DBのステータス値を確認してください。 :String:cMisDataLayer.ExecuteRecordset

エラー2:説明:「プロバイダはプロパティをサポートしていません。」 :String:cMisDataLayer.ExecuteRecordset

私の質問は、なぜ私はこのエラーが発生し、SQLiteのテーブルの列リストを取得するための回避策があるのですか?

ありがとうございました。

答えて

1

なぜADO RecordSet Fieldsコレクションを使用しないのですか? SELECT * FROMテーブル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 
1

私はSQLite ODBCで作業していませんが、私はあなたがデータベースからスキーマ情報を取得するために使用されるADOXライブラリを実行できると思います。

このpageが役立ちます。

0

Win32またはWin64版のSQLite ODBCドライバを使用しているかどうかを確認すると役立ちます。

関連する問題