2012-01-26 13 views
0

私はこのコードをしばらく見てきました。代替案を研究していますが、うまくいかないようです。私は少し何かを見てきたことを教えてください。あなたは問題がいくつかありsqliteを使用したデータの復帰

-(void)revertData 
{ 
if(revertStmt == nil) { 
    const char *sql = "select signature, sigdate from signatureDB where id = ?"; 
    if(sqlite3_prepare_v2(database, sql, -1, &revertStmt, NULL) != SQLITE_OK){ 
     UIActionSheet *msg = [[UIActionSheet alloc] 
           initWithTitle:[NSString stringWithFormat:@"Error while inserting data. '%s'", sqlite3_errmsg(database)] 
           delegate:nil 
           cancelButtonTitle:nil destructiveButtonTitle:nil 
           otherButtonTitles:@"Okay", nil]; 
     [msg showInView:[UIApplication sharedApplication].delegate.window]; 
    } 
} 

sqlite3_bind_int(revertStmt, 0, myID); 

if(SQLITE_DONE == sqlite3_step(revertStmt)) { 

    self.signature = [NSString stringWithUTF8String:(char *)sqlite3_column_text(revertStmt, 0)]; 
    self.sigdate = [NSString stringWithUTF8String:(char *)sqlite3_column_text(revertStmt, 1)]; 
} 
sqlite3_reset(revertStmt); 

} 
+0

私はそれが間違っていて何をすべきか尋ねてもよいでしょうか? –

+0

私はsqlite3_column_text(revertStmt、0)を呼び出して、それがnullと来るとSIGABRTを通過するように動作するとエラーが発生しますが、sqliteデータベースへの呼び出しを直接行い、適切な値を返します。 – AquaCash5

答えて

0

1)あなたは、あなたのsqlite3_bind_int文で問題を抱えているように見えるドキュメントが

を述べながら、あなたは、2番目の引数が設定するSQLパラメータの指標である指標として0を渡します。 左端のSQLパラメータは、idがないのでsqlite3_stepからの戻り値はSQLITE_DONE(それはもう行がないことを意味、この場合はどれも全くされている場合は、チェックしてください)1.

2のインデックスを持っています問題1のために設定)。 sqlite_column_ *は、戻り値がSQLITE_ROWの場合にのみ有効です。したがって、sqlite3_column_textへの呼び出しが爆発します。

+0

ありがとうございます – AquaCash5

関連する問題