2013-10-29 153 views
0

我正在开发一个使用C#和sqlite的visual studio的健身房会员计划。在每次员工登录尝试中,我都希望程序检查ExpiryDate(客户表中的属性)是否小于当天日期的过期客户。这是一段代码我使用:SQLite数据库错误删除查询

string sql2 = "delete from Customer where ExpiryDate<' " + DateTime.Today + " ' "; 
SQLiteCommand command2 = new SQLiteCommand(sql2, m_dbConnection); 
command2.ExecuteNonQuery(); 
+4

你确定你真的要删除你的客户?这是否意味着如果他们迟交一分钟,他们必须注册新会员? :) –

回答

3

使用参数化查询,并在日期转换为字符串,你的问题就蒸发

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值。

3

为什么不使用SQLite内置的功能呢?

delete from Customer where ExpiryDate<DATE('NOW') 

你是不是失去了一些东西像

delete from Customer where ExpiryDate<DATE('NOW') AND Costumer_id=?