0

作成したsqliteテーブルを更新するために多くのグーグルを実行しましたが、サンプルアプリでテーブルを更新できませんでした。以下のコードの何が問題なのか教えてください.ITはsqlite3_prepare_v2まで正常動作します. (sqlite3_prepare_v2(database, sql, -1, &statement, NULL)==SQLITE_OK)条件は、この if() 条件には入っていません。

const char *dbpath = [[self DBPath] UTF8String];
if(sqlite3_open(dbpath, &database) == SQLITE_OK)
{

    NSString *querySql=[NSString stringWithFormat:@"UPDATE Table1 SET AppEndTime = %@ WHERE AppID= %d",AppEndTime,appID];
    const char *sql=[querySql UTF8String];
    if(sqlite3_prepare_v2(database, sql, -1, &statement, NULL)==SQLITE_OK){
        sqlite3_bind_int(statement, 1, sessionID);
        sqlite3_bind_text(statement, 6, [sessionEndTime UTF8String], -1, SQLITE_TRANSIENT);

    }
}
char* errmsg;
sqlite3_exec(database, "COMMIT", NULL, NULL, &errmsg);

if(SQLITE_DONE != sqlite3_step(statement)){
    NSLog(@"Error while updating. %s", sqlite3_errmsg(database));
}
else{
   sqlite3_reset(statement);
}
sqlite3_finalize(statement);
sqlite3_close(database);
4

3 に答える 3

1

以下のようにコードを置き換えてください。問題が解決することを願っています。

if (sqlite3_prepare_v2(database, sql, -1, &Statement1, NULL) == SQLITE_OK) {

        sqlite3_bind_text(Statement1, 1, [status UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(Statement1, 2, [messageID UTF8String], -1, NULL);

        int success = sqlite3_step(Statement1);
        if(success != SQLITE_ERROR)
        {
        //  NSLog(@"Success");
        }

        sqlite3_finalize(Statement1);
    }
于 2013-11-04T07:52:33.827 に答える
0

Sqlite ファイルがプロジェクト フォルダではなくドキュメント ディレクトリにあることを確認してください。更新と挿入は、ファイルがドキュメント ディレクトリにある場合にのみ機能します。

この回答を参照してください

于 2013-11-04T07:53:01.810 に答える