1
检索数据库中最后一个插入行的主键值时出现问题。无法从SQL数据库中的最后一个插入行检索值
我有一个名称为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。
其实我没有收到任何错误。但我没有gettig结果我期望。我需要得到最后插入行的主键后,我改变葡萄酒名字为字母顺序。但我没有得到最后插入PK值,我正在获得另一个主键值,这是在更改为字母顺序后被替换的。 – monish 2010-02-16 11:13:07
伙计们请帮我解决这个问题。 – monish 2010-02-16 11:23:28