Обновление таблицы SQLIte в приложении для iPhone - PullRequest
0 голосов
/ 02 октября 2011

Я хочу, чтобы в моем приложении была возможность вставлять данные в базу данных sqlite, и, если идентификатор, например, существует, обновить эту строку.

я сделал создание с:

    if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
            sqlite3_stmt *insertStmt = nil;

            if(insertStmt == nil) 
            {
                const char *insertSql = "INSERT INTO Category (id,name) VALUES(?,?)";
                if(sqlite3_prepare_v2(database, insertSql, -1, &insertStmt, NULL) != SQLITE_OK)
                    NSAssert1(0, @"Error while creating insert statement. '%s'", sqlite3_errmsg(database));
            }

            sqlite3_bind_int(insertStmt, 1, 135);
            sqlite3_bind_text(insertStmt, 2, [@"fds" UTF8String], -1, SQLITE_TRANSIENT);

            if(SQLITE_DONE != sqlite3_step(insertStmt))
                NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
            else
                //NSLog("Inserted");
            //Reset the add statement.
            sqlite3_reset(insertStmt);
            insertStmt = nil;
        }
        sqlite3_close(database);

Ответы [ 2 ]

0 голосов
/ 10 августа 2012

Вы можете использовать следующий код для обновления:

- (void) Обновление: (NSString *) запрос {

sqlite3_stmt *statement=nil;

NSString *path = [self GetDatabasePath:DataBaseName] ;

if(sqlite3_open([path UTF8String],&databaseObj) == SQLITE_OK)
{
    if(sqlite3_prepare_v2(databaseObj, [query UTF8String], -1, &statement, NULL) == SQLITE_OK)
    {
        sqlite3_step(statement);
    }
    sqlite3_finalize(statement);
}
if(sqlite3_close(databaseObj) == SQLITE_OK){

}else{
    NSAssert1(0, @"Error: failed to close database on memwarning with message '%s'.", sqlite3_errmsg(databaseObj));
}

}

0 голосов
/ 02 октября 2011

Используйте квалификатор OR REPLACE:

INSERT OR REPLACE INTO Category ...

Это зависит от существования уникального ограничения (обычно первичного ключа), содержащего только столбец id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...