#iphone #objective-c #sqlite
#iPhone #objective-c #sqlite
Вопрос:
Я перепробовал много способов добиться этого, но не смог удалить строку из sqlite, пожалуйста, помогите мне исправить следующий фрагмент кода
dbPath = [self applicationDocumentsDirectory];
NSLog(@"%@", dbPath);
dbPath=[dbPath stringByAppendingPathComponent:@"database"];
dbPath=[dbPath stringByAppendingPathComponent:@"OFFENDERSDB.sqlite"];
NSLog(@"database path --> %@", dbPath);
if (sqlite3_open([dbPath UTF8String], amp;database) == SQLITE_OK) {
const char *sqlStatement = ("DELETE * from OFFENDERS_LIST where ID=%d ",2);
sqlite3_stmt *compiledStatement;
if (sqlite3_prepare(database, sqlStatement, -1, amp;compiledStatement, NULL) == SQLITE_OK) {
NSLog(@"offender deleted");
}
sqlite3_finalize(compiledStatement);
}
Заранее спасибо
Комментарии:
1. Только мазохисты используют SQLite C API непосредственно в Objective-C. Используйте FMDB (оболочку SQLite) или CoreData (диспетчер графов объектов) вместо этого.
2. Довольно забавная оценка выше, исходящая от человека, который разработал
NSPredicate
Editor
Ответ №1:
вы пробовали использовать:
sqlite3_exec(database, sqlStatement...
с помощью вашей инструкции DELETE?
КРОМЕ того …. это УДАЛИТЬ ИЗ …. не УДАЛИТЬ * ИЗ….
Следующий код взят из другого места в Интернете для более полного примера…
sqlite3 *db;
int rc;
rc = sqlite3_open( "C:\MyDatabase", amp;db );
if ( rc )
{
sqlite3_close(db);
}
else //Database connection opened successfuly
{
char *zErrMsg = 0;
rc = sqlite3_exec( db, "DELETE FROM yourTable", NULL, NULL, amp;zErrMsg );
if( rc != SQLITE_OK )
{
sqlite3_free( zErrMsg );
}
sqlite3_close(db);
}
Комментарии:
1. можете ли вы дать мне полное утверждение, даже если оно также не работает для меня
2. Добавлен комментарий об УДАЛЕНИИ Из not DELETE * ВЫШЕ. Вы это тоже исправили?
3. даже после этого эта строка не удаляется
4. Пробовали ли вы распечатать точную инструкцию, которая обрабатывается, затем вырезать и вставить ее в свой любимый браузер запросов sqlite, чтобы посмотреть, нет ли какой-либо проблемы с именем таблицы или инструкцией? Я использую NaviCat Lite, и когда у меня возникают подобные трудности, просто вставьте его туда, чтобы убедиться, что в игре нет проблем с DB, а не с кодом.
5. да, проблемы с базой данных нет, конечный результат == SQLITE_OK мы должны sqlite3_finalize это, но не знаем, как это сделать