日付ピッカー ボックスを備えたこの C# Web フォームがあります。日付が何も設定されていない場合 (デフォルト)、データベースに NULL を渡します。これは、パラメータ化されたクエリ内で発生します。
SqlParameter CMActionDate = new SqlParameter();
CMActionDate.ParameterName = "@ActionDate";
if (ActionDate.Equals(""))
{
CMActionDate.Value = System.Data.SqlTypes.SqlDateTime.Null;
}
else
{
CMActionDate.Value = ActionDate;
}
デバッグをオンにすると、日付が実際に "" であることがわかります。したがって、IF ステートメントに入り、そうすべきだと思うように actiondate.value を {Null} に設定します。
でも。
次に非クエリを実行するときに、虫めがねをクリックすると、次のように表示されます。
UPDATE table SET [action_date] = '' WHERE [id] = 2488
私が見たいのはこれです:
UPDATE table SET [action_date] = 'Null' WHERE [id] = 2488
action_date が実際に NULL に設定されることはないため、datetime フィールドの値は "01/01/1900 12:00:00AM" に戻り、それ自体が面倒です。
CMActionDate.Value を次の値に設定しようとしましたが、役に立ちませんでした (上記と同じ結果が得られます)。
- DBNull.Value;
- "ヌル";
- SqlDateTime.Null;
- ヌル;
ヘルプ。
編集
多分私ははっきりしていませんでしたか?はい、もちろん、パラメータ化されたクエリは次のようになります。
"UPDATE CM_Codebase SET [action_date] = '" + @ActionDate + "' WHERE [id] = " + @CM_id + "";
しかし、VS でこのことをデバッグしているときは、ExecuteNonQuery(); の直前にブレークポイントを置きます。実行しようとしている SQL を確認できます。そこに実際の SQL が表示され、action_date='' のビットが表示されます。
それは役に立ちますか?