-2

こんにちは、winapiスレッド内でsqliteを使用しようとしていますが、sqliteprepareステートメントが機能していません。なぜ私のコードを見てください。sqlite3_prepare_v2がSQLITE_OKを返していません。

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;
}
4

1 に答える 1

1

INSETコマンドではありません。それはそうあるべきですINSERT。エラー処理に精通する必要があります。リターンコードを確認し、エラーメッセージをログに記録せずにコマンドを実行しないでください。このドキュメントに従っている場合は、この質問をする必要はありません。

于 2012-12-22T17:15:43.937 に答える