привязка или индекс столбца вне диапазона

#iphone #sqlite

#iPhone #sqlite

Вопрос:

Я хочу удалить все данные в существующей базе данных sqlite, это код, который я использую:

 sqlite3* database;
databaseName = @"AppDB";
NSString *pathToDatabase;
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
pathToDatabase = [documentsDir stringByAppendingPathComponent:databaseName];

int databaseReturnCode = sqlite3_open([pathToDatabase UTF8String], amp;database);
NSLog(@"databaseReturnCode %d",databaseReturnCode);
if(databaseReturnCode == SQLITE_OK) {


    const char *sql = "delete from AppDB";
    sqlite3_stmt *delete_statement;

    sqlite3_prepare_v2(database, sql, -1, amp;delete_statement, NULL);

    sqlite3_bind_int(delete_statement, 1, 1);

    printf( "error or not an error? :  %sn", sqlite3_errmsg(database) ); 

    sqlite3_reset(delete_statement);

    sqlite3_finalize(delete_statement);

}
sqlite3_close(database);    
  

в этой базе данных более одного поля и более одной таблицы. Пожалуйста, дайте мне знать, в чем ошибка. Заранее спасибо.

Ответ №1:

Пожалуйста, прокомментируйте эту sqlite3_bind_int(delete_statement, 1, 1); строку и запустите код, потому что в запросе у вас нет ни одного параметра, который нуждался бы в привязке. Также я задаюсь вопросом, существует ли этот запрос? можете ли вы сделать подобное удаление из какой-либо базы данных напрямую? Я не думаю, что есть какой-либо запрос, который принимает имя базы данных! (Я надеюсь, AppDB это имя таблицы).

[Мы должны следовать стандартным соглашениям об именовании для упрощения понимания.]

Спасибо

Комментарии:

1. Спасибо! это работает!! Имя базы данных и первая таблица совпадают, поэтому все записи первой таблицы удаляются . Выполняется этот прямой запрос