2010-10-29 103 views
0

想象一下,我有一個sqlite表中有3行。Sqlite - 讀取時插入行

在讀取這3行時,我還想插入新行,具體取決於這3行中的值。

我做了這些行的選擇,並使用sqlite3_step函數來獲取每一行。

問題是,sqlite3_step循環超過3次,我想因爲它也看到新插入的行。不知何故遊標得到重置,同一行讀取兩次等。

如何讓sqlite3_step只讀3行?基本上我希望循環遍歷結果集而不是新行。

謝謝。

回答

1

基本上,我這是怎麼解決這個問題。

我通過遍歷所有行來執行更新&刪除。但是我只在完成遍歷後才插入。

感謝您的幫助。

1

sqlite有一個函數可以一次返回所有的行;你可以使用它來獲得現有的行,然後添加新的行。自從我使用它以來已經有一段時間了,所以我忘記了函數的名稱。

1

我想你可以通過啓動交易,在循環之後使用sqlite3_step遍歷行循環之前添加行,並承諾本次交易實現所期望的行爲。

1

你可以使用一個變量來保存最後插入的行(當你第一次執行插入)。如果你的目標是達到新的集時停止處理...這個值插入時返回。你也可以使用最後插入的行;

sqlite3_last_insert_rowid(sqlite3*) 

如果你想跟蹤哪一行是觸發你的插入 - 在處理它時簡單地存儲它是rowid。

這會給你行的一個有效窗口

processThisRow = (currentRowId > lastTriggered && currentRowId < firstInserted); 

處理..或者你也許可以使用單獨的事務上面建議。

希望這有助於

Rgrds 安德斯