无法从SQL数据库中的上一个插入行检索值

时间:2010-02-16 10:51:19

标签: objective-c sqlite

检索数据库中最后一个插入行的主键值时出现问题。

我有一个名为wineDetails的表,其中包含超过2000个葡萄酒名称。我按字母顺序显示名称。

当我在wineDetails表中添加新的葡萄酒名称时,新的葡萄酒名称主键在数据库中是2001,但是当我按字母顺序更改显示葡萄酒名称时,我得到另一个的主键值葡萄酒名称而不是2001年。

为了得到最后插入的行主要凯,我把代码编写为:

- (void)addWineDetails:(wineDetails *)awineDet 
{
    sqlite3_stmt *insert_statement;
    static char *sql = "INSERT INTO wineDetails (name,regionId,categoryId) VALUES (?,?,?)";
    if (sqlite3_prepare_v2(database, sql, -1, &insert_statement, NULL) != SQLITE_OK)
    {       
        NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
    }
    sqlite3_bind_text(insert_statement, 1, [[awineDet wine_Name]UTF8String] , -1, SQLITE_TRANSIENT);
    sqlite3_bind_int(insert_statement, 2,[awineDet region_Id]);
    sqlite3_bind_int(insert_statement, 3,[awineDet category_Id]);
    int success = sqlite3_step(insert_statement);
    sqlite3_finalize(insert_statement);
    if (success == SQLITE_ERROR)
    {
        NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database));
    } 
    else
    {
        primaryKey = sqlite3_last_insert_rowid(database);
        int lastInsertId =  sqlite3_last_insert_rowid(database);
        wineDetPk = lastInsertId;
        printf("\n last insert id in adding:%d",lastInsertId);
        printf("\nwineDetPk id in adding:%d",wineDetPk);
    }
}

伙计们,请帮我摆脱这个。

任何人的帮助都将受到赞赏。

谢谢你, Monish Kumar。

1 个答案:

答案 0 :(得分:0)

上次自动识别
它是由auto_increment生成的吗? 如果是,您可以使用插入功能本身
我还注意到你正在尝试获取PK和插入ID。据我所知,auto_increment 必须也是主键。所以它有点多余。

如果您添加当前错误,我可以提供更多建议。