SQLite数据库错误删除查询
问题描述:
我正在开发一个使用C#和sqlite的visual studio的健身房会员计划。在每次员工登录尝试中,我都希望程序检查ExpiryDate(客户表中的属性)是否小于当天日期的过期客户。这是一段代码我使用:SQLite数据库错误删除查询
string sql2 = "delete from Customer where ExpiryDate<' " + DateTime.Today + " ' ";
SQLiteCommand command2 = new SQLiteCommand(sql2, m_dbConnection);
command2.ExecuteNonQuery();
答
使用参数化查询,并在日期转换为字符串,你的问题就蒸发
string sql2 = "delete from Customer where ExpiryDate < @td";
SQLiteCommand command2 = new SQLiteCommand(sql2, m_dbConnection);
command2.Parameters.AddWithValue("@td", DateTime.Today);
command2.ExecuteNonQuery();
当然这也是为了避免SQL中推荐的方法注射,但在这种情况下不是你的主要关注。
顺便说一句,我同意上面你的问题的意见。可能最好是在计算截止日期时有一点灵活性。例如,您可以添加一个配置选项,设置截止日期后允许的最大天数并将其添加到DateTime.Today值。
答
为什么不使用SQLite内置的功能呢?
delete from Customer where ExpiryDate<DATE('NOW')
你是不是失去了一些东西像
delete from Customer where ExpiryDate<DATE('NOW') AND Costumer_id=?
你确定你真的要删除你的客户?这是否意味着如果他们迟交一分钟,他们必须注册新会员? :) –