2012-12-22 13 views
-2

喜WINAPI線程正在嘗試使用SQLite WINAPI線程內,但sqlite的準備statment不工作我不爲什麼,請幫忙看看是我的代碼sqlite3_prepare_v2沒有返回SQLITE_OK源碼在C++

DWORD WINAPI dloader(LPVOID lpParameter) 
{ 
    sqlite3 *db;  // databse handler 
    sqlite3_stmt *stat; // statment .... 
    char *q; 
    q="INSERT INTO search (id,fname,fpath) VALUES (NULL,?,?)"; 
    LPSTR f = (LPSTR)lpParameter, ff; 
    size_t s = lstrlen(f); DWORD bw; 
cout<<"\nin loader"; 
    if ((s > 0) && (lstrcmp(&f[s-4], ".jpg") == 0)) 
    { 
     ff = PathFindFileNameA(f); 
     s = lstrlen(f); 
     if(sqlite3_prepare_v2(db, q, strlen(q), &stat, 0) == SQLITE_OK){ 
     // Bind values 
     cout<<"\nvalues binded"; 
     sqlite3_bind_text(stat, 1, ff, strlen(ff), 0); // file name 
     sqlite3_bind_text(stat, 2, f, strlen(f), 0); // file path + file name 
     sqlite3_step(stat); // prepare statemnt Ready 
     sqlite3_finalize(stat);  
    } 
    } 

    return 0; 
} 
+0

如果您在檢測到錯誤時沒有打印或記錄錯誤消息,那麼這是您自己的錯誤,您不知道發生了什麼。 – Mat

+0

我不能轉換sqlite3整數錯誤代碼 –

+0

看看sqlite API。有一個函數可以將錯誤代碼轉換爲錯誤字符串。 – Mat

回答

1

INSET被不是一個命令。那應該是INSERT。您需要熟悉錯誤處理。不檢查返回代碼並記錄錯誤消息,不要運行命令。如果您遵循this documentation,則不必提出此問題。

+0

雅與插入它不工作 –

+0

k完成:D謝謝你的幫助 –