Значение не извлекается из базы данных в sqlite в iphone - PullRequest
0 голосов
/ 27 декабря 2011

Сейчас я делаю одну программу на 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.

Пожалуйста, помогите.

1 Ответ

1 голос
/ 27 декабря 2011

Я не вижу, где вы открыли базу данных

убедитесь, что вы открыли его !!

Я предлагаю вам попробовать

const char * update= [[[NSString alloc]initWithFormat:@"UPDATE EMP1  SET name ='%@',desc='%@',salary=%d WHERE empID = %d",name,desc,salary,empID] UTF8String];
        sqlite3_exec(db, update, nil, nil, nil);

Дайте мне знать, если это поможет !!!

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