可能重複:
SQLite - UPSERT not INSERT or REPLACE
How do I UPDATE a row in a table or INSERT it if it doesn't exist?的Upsert SQLite中3使用LINQ表達
我正在開發使用的是Windows 8發佈預覽和C#(VS 2012)metro應用,我新來的SQLite,我整合SQLite 3.7.13在我的應用程序,它工作正常,在MYSQL我們有像
INSERT INTO tablename (id, name)
VALUES (21, 'foo')
ON DUPLICATE KEY UPDATE name = 'boo';
,我們怎樣才能SQLite的3使用LINQ表達,現在我在插入記錄和捕捉SQLiteException
和更新exception.Please該記錄遵守以下
var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path,"Student.db");
DateTime LastUpdated = DateTime.UtcNow;
using (var db = new SQLite.SQLiteConnection(dbPath))
{
try
{
db.Insert(new studentRecord() { sid = 21, name = 'foo', last_updated = LastUpdated });
}
catch(SQLite.SQLiteException ex)
{
db.Update(new studentRecord() { sid = 21, name = 'boo', last_updated = LastUpdated });
}
}
我的代碼在哪裏studentRecord
是我的表名實現這一目標。 我不確定這是正確的方式,有沒有什麼辦法可以在單個查詢中實現,請幫助我。在此先感謝
如果拋出另一個異常會怎麼樣?就像「連接丟失」一樣,當你嘗試在catch中更新時它會拋出另一個錯誤,並且會因爲你不嘗試捕獲該錯誤而崩潰。也許有更好的辦法像你的mysql,但我寧願檢查項目是否已經存在,並根據該查詢更新或插入。 – Silvermind