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注入攻击,并避免转换问题(尤其是日期/时间值)。
该记录存在于数据库中。它适用于第二次或第三次尝试。 – user703526 2012-03-14 21:52:39
@ user703526:您确定它在第一次尝试之前是否存在(并已提交)?对于完全相同的查询产生不同的结果而不介入操作(如提交),这将是非常不寻常的。 – 2012-03-14 21:55:50