Ich habe 3 Textfelder in meiner App. der dritte ist für das Geburtsdatum, welcher Benutzer leer halten kann.NULL in SQL Server Datetime Spalte mit vb.net in asp.net zuweisen
Die App speichert die vom Benutzer eingegebenen Werte in eine SQL Server-Datenbank mit einer Tabelle mit 3 Spalten. Der Datentyp der Geburtstagsspalte ist auf Date
festgelegt und als Nullable definiert.
Wenn der Benutzer hält der Geburtstag Textbox leer, möchte ich NULL in die birthday
Spalte zuweisen, so habe ich versucht, diesen Code:
If txtBirthday.Text = "" Then
command.Parameters.AddWithValue("@Field3", DBNull.value)
End If
Aber das hat nicht funktioniert. Ich habe auch versucht (nach der Zugabe von Imports System.Data.SqlTypes
):
If txtBirthday.Text = "" Then
command.Parameters.AddWithValue("@Field3", SqlDateTime.Null)
End If
Aber das auch nicht funktioniert.
Ich suchte nach einer Lösung für das Problem, aber keinen Erfolg.
Bitte helfen
Hier ist mein voller Code:
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
Das ist die Ausnahme, die ich bekam:
{System.Data.SqlClient.SqlError: Conversion failed when converting date and/or time from character string.}
es sieht aus wie funktionieren sollte genommen werden. Können Sie uns bitte die gespeicherte Prozedur oder den Befehlstext zeigen? – N0Alias
Nur für grins versuchen cmd.Parameters.Add ("@ Field3", SqlDbType.Date) .Wert = DBNull.Value – Mary
Hat das Textfeld eine Maske? ... Ist es wirklich leer? Verfolgen Sie den Wert ersetzt Leerzeichen um zu überprüfen, dass es wirklich leer – Ctznkane525