0

データベースの列を更新できるWebフォームアプリケーションがあります。データベース列の1つは、SQLServerデータベースFinish Datedateデータ型です。

パラメータとテキストボックスを含むSQLクエリを使用して、終了日の新しい値を提供します。

これは、グリッド内のテキストボックスから日付の値を取得するコードです。

TextBox tFD = (TextBox)grdProjectUpdate.Rows[e.RowIndex].Cells[11].FindControl("proFDTextBox");

次に、パラメーターを使用します。

cmd.Parameters.Add("@proFD", SqlDbType.Date).Value = tFD.Text.Trim();

このSQLステートメントを使用して値を更新するには:

UPDATE PMSprojects SET proFD = @proFD ,...    

このソリューションは、実際の日付が提供されている場合は常に正常に機能します。ただし、nullは保存されません。1900-01-01空の文字列を指定すると、データベースの列でnullが許可されていても、日付に変換されます。

この問題を解決して、nullをデータベースに保存するにはどうすればよいですか?

4

1 に答える 1

3

これを処理するコードを記述しDbNull.Value、値がnullの場合に渡す必要があります。

cmd.Parameters.Add("@proFD", SqlDbType.Date).Value = (tFD.Text.Trim().Length > 0) ? (object)tFD.Text.Trim() : DbNull.Value;
于 2013-01-03T16:16:22.640 に答える