2016-10-30 3 views
-1

odbc apiを使用して既存のデータベースアプリケーションにSQLiteを追加します。私はSQLiteを初めて使っています。スタートアップにはいくつかのヒントが必要です。ここに私のコードの一部がSQLiteのヘルプが必要

wchar_t wszInStr[256] = L"DRIVER=SQLite3 ODBC Driver; Version=3; Database=D:\\Amin88\\AminDB.db; LongNames=0; Timeout=1000;NoTXN=0; SyncPragma=NORMAL; StepAPI=0;" 
wchar_t wszOutStr[1024]; 
SQLSMALLINT uOutLen = 0;  
retcode = SQLDriverConnectW(m_hdbc, hWndMain, wszInStr, _countof(wszInStr), wszOutStr, _countof(wszOutStr), &uOutLen, SQL_DRIVER_NOPROMPT); 
const wchar_t * wszQuery = L"CREATE TABLE ATDBROLE (\"ID\" INTEGER NOT NULL)" ; 
SQLRETURN retcode; 
retcode = ::SQLExecDirectW(hstmt, (SQLWCHAR*)wszQuery, SQL_NTS); 
wprintf(L"retcode=%d\n", retcode); //retcode=100 

あるSQLDriverConnectWは0(成功)を返し、ファイル 'D:\ Amin88 \ AminDB.dbは' ゼロサイズで作成されましたか?データベースが作成されたことを意味しますか?なぜサイズは0ですか? データベースを作成したと仮定して、なぜCREATE DATABASEがSQL_NODATAを返すのですか? ありがとうございます

答えて

0

SQlite3 ODBCマネージャは、SQLite形式がデータベースよりも一般的なファイル形式であり、オブジェクトがない場合はサイズが0であるため、データベースをサイズ0で作成します。 SQLExecuteDirectWは ';'が必要であるためSQL_NODATAを返します。問合せの最後に、コミット・トランザクション後にのみファイル・サイズが0以外になります。