2012-03-14 117 views
0

在我的c#應用程序中,我試圖刪除一條記錄,並且我正在返回executiontenonquery的結果,以檢查刪除操作是否正在發生,如下所示。ExecuteNonquery返回0

rowsAffected = db.ExecuteNonQuerySQL(
    @"DELETE FROM relation WHERE parent_itemid = " + SourceThingId + " AND " + 
    "  child_itemid = " + ThingId + " AND " + 
    "  relation_typeid = " + RelationTypeId); 

而且爲ExecuteNonQuery如下definesd,

using (SQLiteTransaction dbtrans = conn.BeginTransaction()) 
{ 
    SQLiteCommand cmd = conn.CreateCommand(); 
    cmd.CommandText = sqlExpr; 
    cmd.CommandType = CommandType.Text; 
    ireturn = cmd.ExecuteNonQuery(); 
    dbtrans.Commit(); 
} 
return ireturn; 

當我執行它不會刪除和值返回用於0.The DATABSE不過是源碼。

有沒有人知道爲什麼會發生。請幫助。

Thanx提前。

回答

2

那麼它當然聽起來像記錄根本不存在。您應該通過運行帶有相同查詢的SELECT *進行調試,並查看是否得到任何結果。

您應該停止將您的值直接放入SQL,而是使用參數化的SQL。這樣可以更好地分離代碼和數據,避免SQL注入攻擊,並避免轉換問題(尤其是日期/時間值)。

+0

該記錄存在於數據庫中。它適用於第二次或第三次嘗試。 – user703526 2012-03-14 21:52:39

+0

@ user703526:您確定它在第一次嘗試之前是否存在(並已提交)?對於完全相同的查詢產生不同的結果而不介入操作(如提交),這將是非常不尋常的。 – 2012-03-14 21:55:50