私のアプリケーションには3つのテキストボックスがあります。第3のものは、あなたが空にしておくことができる誕生日のものである。asp.netのvb.netを使用してNULLをSQL Serverのdatetime列に割り当てます。
ユーザーが入力した値は、3列のテーブルを持つSQL Serverデータベースに保存されます。誕生日列のデータ型はDate
に設定され、null可能と定義されています。
ユーザーが空の誕生日のテキストボックスを保持している場合、私はbirthday
カラムにNULLを割り当てたいので、私はこのコードを試してみました:
If txtBirthday.Text = "" Then
command.Parameters.AddWithValue("@Field3", DBNull.value)
End If
をしかし、それは動作しませんでした。私はまた、(Imports System.Data.SqlTypes
を追加した後に)試してみました:
If txtBirthday.Text = "" Then
command.Parameters.AddWithValue("@Field3", SqlDateTime.Null)
End If
をしかし、それもうまくいきませんでした。
私は問題の解決策を探しましたが、成功しませんでした。
ここ
は私の完全なコードです助けてください:
Dim Query As String = "INSERT INTO UserInfo (fName, lName, bDay) VALUES (@Field1, @Field2, @Field3);"
Dim connectionString = ConfigurationManager.ConnectionStrings("myapp_con_string").ConnectionString
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(Query, connection)
With command
.Connection = connection
.CommandType = CommandType.Text
.CommandText = Query
.Parameters.AddWithValue("@Field1", txtFirstname.Text)
.Parameters.AddWithValue("@Field2", txtLastname.Text)
If txtBirthday.Text = "" Then
command.Parameters.AddWithValue("@Field3", DBNull.value)
Else
command.Parameters.AddWithValue("@Field3", Convert.ToDateTime(txtBirthdat.Text).ToString("yyyy/MM/dd"))
End If
End With
Try
connection.Open()
command.ExecuteNonQuery()
lblMessages.Text = "Data Saved"
Catch ex As SqlException
lblMessages.Text = "Data Not Saved"
End Try
End Using
これは私が得た例外です:
{System.Data.SqlClient.SqlError: Conversion failed when converting date and/or time from character string.}
でNULLと解釈される場合
は今3番目のパラメータをバインドしないでください、それが動作するはずのように見えます。ストアドプロシージャまたはコマンドテキストを表示してください。 – N0Alias
cmd.Parameters.Add( "@ Field3"、SqlDbType.Date).Value = DBNull.Value – Mary
テキストボックスにマスクがありますか?それは本当に空ですか?空白であることを確認するためにスペースを置き換える値をトレースしてください – Ctznkane525