Редактировать данные в базе данных SQLite программно - PullRequest
1 голос
/ 09 июня 2011

Я использую следующий метод для обновления таблицы SQLite с отредактированными данными.Я сделал экран редактирования таким образом, чтобы по щелчку каждой строки табличного представления, которое получает данные из XML, он переходил на страницу, где у меня есть текстовое поле для ввода отредактированных данных.

Iесть кнопка «Сохранить» в этом классе.Я не понимаю, как вызвать этот метод в обработчике событий кнопки сохранения.Может ли кто-нибудь дать мне хорошие учебные ссылки или пример кода для программного редактирования данных SQLite?

- (void) saveUpdatedStudentData {
    if(updateStmt == nil) {
        const char *sql = "update tbl_Students Set StudentName = ?,Age =?,Gender =?,DOB =?,StudentID =?,BloodGroup =?,Address =?,Class =?,Section =?,Stream =?,LastName =?,MiddleName =? Where tbl_ID = ?";

        if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK) {
            NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database));
        }

        sqlite3_bind_text(updateStmt, 1, [strstudentName UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 2, [strAge UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 3, [strGender UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 4, [strDOB UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 5, [strStudentID UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 6, [strBloodGroup UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 7, [strAddress UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 8, [strClass UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 9, [strSection UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 10,[strStream UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 11,[strStuMiddleName UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 12,[strLastName UTF8String], -1, SQLITE_TRANSIENT);

        if(SQLITE_DONE != sqlite3_step(updateStmt))
            NSAssert1(0, @"Error while updating. '%s'", sqlite3_errmsg(database));

        sqlite3_reset(updateStmt);


    }
}

1 Ответ

0 голосов
/ 09 июня 2011

Вы используете sqlite3_bind_text для полей, пожалуйста, убедитесь, что ни одно из полей вашей таблицы не имеет тип int, иначе внесите соответствующие изменения.Если вы можете опубликовать sqlite3_errmsg, это было бы здорово.

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