ExecuteNonquery返回0

时间:2012-03-14 21:46:57

标签: c#

在我的c#应用程序中,我正在尝试删除记录,并且我将返回执行结果以检查删除是否正好如下所示。

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

执行查询的定义如下,

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

但是当我执行它不删除时,值返回0.使用的数据库是sqlite。

任何人都知道为什么会这样。请帮助。

提前完成。

1 个答案:

答案 0 :(得分:2)

嗯,它确实听起来就像记录根本就不存在。您应该通过使用相同的查询运行SELECT *来调试此问题,并查看是否得到任何结果。

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