[英]Inserting Rows in Database Using Sqlite Iphone
我有以下代碼ni在數據庫中有4條記錄但循環運行2次n只獲得第一行兩次我的代碼中有問題嗎?
- (void) getAllRowsFromTableName:(NSString *)tableName{
NSString *qsql = [NSString stringWithFormat:@"SELECT * FROM '%@'",tableName];
NSLog(@"query is :%@",qsql);
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(db,[qsql UTF8String] , -1, &statement,nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
NSLog(@"loop");
int catId = sqlite3_column_int(statement, 1);
NSLog(@"***CatId is :%d",catId);
sqlite3_finalize(statement);
}
sqlite3_finalize(statement);
}
哇! 另一個本機使用sqllite3 !! :)
我建議你一個名為FMDB的外部lib(2個文件),它是sqllite3
的包裝器。
易於使用。 希望這可以幫助。
只是為了完成並關閉這個問題,我正在回答我的評論。
嘗試評論sqlite3_finalize(語句); 在while循環中。 闡釋:
SQLite.org說
調用sqlite3_finalize()函數以刪除預准備語句。
也,
應用程序必須完成每個准備好的語句,以避免資源泄漏。 應用程序在完成后嘗試使用預准備語句是一個嚴重錯誤。 在最終確定之后對預准備語句的任何使用都可能導致未定義和不良行為,例如段錯誤和堆損壞。
謝謝,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.