2017-08-16 4 views
-4

私はC#Winformsアプリケーションを使用してデータベース内の特定のアイテムの有効期限を設定しようとしています。より大きい、または小さい記号を使用する方法C#MySQLの更新ステートメント

は、これまでのところ私はこの試みた:

MySqlCommand comm = new MySqlCommand("update items set Expiry = 'Yes' where ExpiryDate > "+ DateTime.Now.ToShortTimeString()+");",connection); 
comm.ExecuteNonQuery(); 

をしかし、私はない文字列の多くの理由のための連結が、最も明白なものとして、パラメータとしてごDateTimeを追加し、それ

+0

あなたは問題をあなたに提供できますか? –

+0

これをチェックアウトしてください:https://stackoverflow.com/questions/9610361/sql-greater-than-equal-to-and-less-than – 10a

+2

多くの理由で文字列連結としてではなく、パラメータとして 'DateTime'を追加します。ここで最も明白なのは、値を一重引用符で囲むことを忘れることです。将来、Exceptionとその詳細を提供することによってあなたが持っている 'issues'を説明します(はい、このコードはExceptionを実行時に投げます)。 [ask]と[mcve]も参照してください。 – Igor

答えて

3

の問題を抱えていますここで値の周りに一重引用符を追加することを忘れてしまいます。今後、issuesについて説明します。OPのコードは、実行時に例外をスローします)。

MySqlCommand comm = new MySqlCommand("UPDATE items SET Expiry = 'Yes' WHERE ExpiryDate > @today", connection); 
comm.Parameters.AddWithValue("@today", DateTime.Today); // if you want time use DateTime.Now 
comm.ExecuteNonQuery(); 

上記のコードは、[アイテム]と仮定している。[期限切れ]、テーブル定義(スキーマ)タイプDate又はDateTimeです。

+1

完了したらコマンドオブジェクトを破棄することを忘れないでください! – ShooShoSha

+0

ありがとう、それは働いた –

関連する問題