ExecuteNonquery返回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提前。

那么它当然听起来像记录根本不存在。您应该通过运行带有相同查询的SELECT *进行调试,并查看是否得到任何结果。

您应该停止将您的值直接放入SQL,而是使用参数化的SQL。这样可以更好地分离代码和数据,避免SQL注入攻击,并避免转换问题(尤其是日期/时间值)。

+0

该记录存在于数据库中。它适用于第二次或第三次尝试。 – user703526 2012-03-14 21:52:39

+0

@ user703526:您确定它在第一次尝试之前是否存在(并已提交)?对于完全相同的查询产生不同的结果而不介入操作(如提交),这将是非常不寻常的。 – 2012-03-14 21:55:50