2016-10-30 3 views
-1

Ich möchte SQLite zu einer vorhandenen Datenbankanwendung mit odbc api hinzufügen. Ich bin sehr neu in SQLite. also brauche ich ein paar Hinweise zum Startup. Teil meines Code hier istbrauche Hilfe über 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 liefert 0 (Erfolg), und die Datei 'D: \ Amin88 \ AminDB.db' mit Größe Null erstellt? Bedeutet es, dass die Datenbank erstellt wurde? Warum ist die Größe 0? Angenommen Datenbank erstellt, warum CREATE DATABASE SQL_NODATA zurückgibt? Vielen Dank im Voraus

Antwort

0

Der ODBC-Manager SQlite3 erstellt die Datenbank mit der Größe 0, da das SQLite-Format ein allgemeineres Dateiformat als die Datenbank ist. Die Größe ist 0, wenn es keine Objekte enthält. SQLExecuteDirectW gibt SQL_NODATA zurück, weil es ';' erwartet am Ende der Abfrage, und die Dateigröße ist nur nach der Commit-Transaktion ungleich Null.