0

C# と sqlite を使用して、ビジュアル スタジオでジム メンバーシップ プログラムを開発しています。従業員がログインしようとするたびに、ExpiryDate(Customer テーブルの属性) が今日の日付よりも前の期限切れの顧客をプログラムでチェックする必要があります。これは私が使用したコードです:

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

2 に答える 2

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 値に追加できます。

于 2013-10-29T17:00:03.260 に答える