检索数据库中最后一个插入行的主键值时出现问题。
我有一个名为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。
答案 0 :(得分:0)
上次自动识别
它是由auto_increment生成的吗?
如果是,您可以使用插入功能本身
我还注意到你正在尝试获取PK和插入ID。据我所知,auto_increment 必须也是主键。所以它有点多余。
如果您添加当前错误,我可以提供更多建议。