0

ボタンに次のコードがあり、クリックするとid値jobNumberに基づいてフィールドが更新されます。DB が更新されない理由がわかりません。誰かがここで私を助けてくれれば幸いです:

何が欠けているようですか?前もって感謝します。Documents ディレクトリには 777 のアクセス許可があるため、db ファイルには.

コード:

  -(IBAction)saveJob:(id)sender
   {
    sqlite3_stmt    *statement = NULL;
    const char *sql1 ="UPDATE JOB SET JOBTITLE =?, COMPANY=?, ADDRESS =?, PHONE=?     WHERE jobNumber=?";


    sqlite3_prepare_v2(db, sql1, -1, &statement, NULL);
    sqlite3_bind_text(statement, 1,[self.jobTitle.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(statement, 2,[self.Company.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(statement, 3,[self.Address.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(statement, 4,[self.phoneNumber.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_int(statement, 5,[self.jobNumber.text intValue]);
    sqlite3_exec(db, sql1, NULL, NULL, NULL);
    sqlite3_exec(db, "COMMIT", NULL, NULL, NULL);
    if(SQLITE_DONE != sqlite3_step(statement))
    {
        NSLog(@"Error in updating data"); ====> Code always comes here. 
    }
    sqlite3_finalize(statement);
    sqlite3_close(db);

行を挿入する別のステートメントがあり、それは機能します。しかし、更新はそうではありません

4

1 に答える 1

0

次の戻り値を確認する必要がありますsqlite3_prepare_v2

if (sqlite3_prepare_v2(db, sql1, -1, &statement, NULL) != SQLITE_OK)
{
    NSLog(@"error...: %s", sqlite3_errmsg(db));
    sqlite3_finalize(statement);
    sqlite3_close(db);
    return ...;
}

また、電話sqlite3_execをかけないでくださいsql1。さらに、 は のCOMMIT実行する必要があり、 を実行していない場合は役に立ちません。(エラーもチェックする必要があります。)sqlite3_finalizeBEGINsqlite3_exec

于 2013-09-27T07:22:17.190 に答える