2013-10-29 169 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=?