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