Сейчас я делаю одну программу на SQLite. Я должен сохранить три имени данных, описание (desc) и зарплата. После этого эти данные должны отображаться в текстовых полях для дальнейших обновлений. Ниже мой код для отображения
(UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
switch(indexPath.section) {
case 0:
cell.text = empObj.name;
break;
case 1:
cell.text = [NSString stringWithFormat:@"%@", empObj.desc];
break;
case 2:
cell.text = [NSString stringWithFormat:@"%@", empObj.salary];
break;
}
return cell;
}
Ниже приведен код для сохранения данных в базе данных:
(void) saveAllData {
if(isDirty) {
if(updateStmt == nil) {
const char *sql = "update EMP1 Set name = ?,desc=?, salary = ? Where empID = ?";
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, [name UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(updateStmt, 2, [desc UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_double(updateStmt, 3, [salary doubleValue]);
sqlite3_bind_int(updateStmt, 4, empID);
if(SQLITE_DONE != sqlite3_step(updateStmt))
NSAssert1(0, @"Error while updating. '%s'", sqlite3_errmsg(database));
sqlite3_reset(updateStmt);
isDirty = NO;
}
//Reclaim all memory here.
[name release];
name = nil;
[desc release];
desc = nil;
[salary release];
salary = nil;
isDetailViewHydrated = NO;
}
Но это описание (desc) показывает null
. Если я отредактирую переменную desc
и сохраню, то она отобразится. Но если я закрою программу и затем снова открою ее, то в деталях появится описание (desc) значения null
.
Пожалуйста, помогите.