iPhoneアプリ開発初心者です。iPhoneで通話履歴アプリを開発しています。このアプリケーションでは、通話履歴データベースを使用してすべての通話の詳細を取得し、テーブル ビューで表示しています。ここで、データベース内の選択された行の呼び出し履歴値に対して削除を実行したいと考えています。この操作の実行方法がわかりません。次のコードを使用していますが、次のようなエラーが表示されます。
キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: 'delete ステートメントの作成中にエラーが発生しました。「"<" 付近: 構文エラー」
- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[appDelegate.displayHistroryValueAppDelegate removeObjectAtIndex:indexPath.row];
[displayTableView reloadData];
int rowId = [[[appDelegate.displayHistroryValueAppDelegate objectAtIndex:indexPath.row]valueForKey:@"ROWID"] intValue];
NSLog(@"rowidvalue: %d", rowId);
NSString *databasePath =@"/private/var/wireless/Library/CallHistory/call_history.db";
// NSString *sqlStatement = [NSString stringWithFormat:@"DELETE FROM calls WHERE ROWID = %d",rowId];
// NSLog(@"DELETE statement: %@", sqlStatement);
sqlite3 *database;
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
//const char *sql = "delete from reminders where ID = ?";
//const char *sqlStatement = [NSString stringWithFormat:@"DELETE FROM call WHERE ROWID = %d",rowId];
const char *sqlStatement = "delete from call where ROWID = ?";
sqlite3_stmt *deletestmt;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &deletestmt, NULL) != SQLITE_OK)
{
NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database));
}
// sqlite3_bind_int(deletestmt, 1, [IdValue intValue]);
sqlite3_bind_int(deletestmt, 1, rowId);
if (SQLITE_DONE != sqlite3_step(deletestmt))
NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database));
sqlite3_reset(deletestmt);
}
}
}
私を助けてください