DateTimePickerを使用して日付を選択し、TextBoxを使用して時刻を選択しています。
両方の値をテーブルに挿入しようとしていますが、機能しません
INSERT INTO dt (date) VALUES('" & DateTimePicker1.Text & TextBox1.Text & "');
date
列はタイプdatetime
です。
コードはこのエラーを示しています:文字列から日時を変換するときに変換に失敗しました
表現の文化的な違いのために、データベースに文字列として日時を渡すことは本当に望ましくありません。代わりに、パラメーターを使用して日時タイプを渡すことができます。SQL Serverの場合、次のようなものが必要です。
Dim dt As DateTime
dt = DateTimePicker1.Value.Date ' use only the date portion '
Dim tim As DateTime
If DateTime.TryParse(TextBox1.Text, tim) Then
dt = dt + tim.TimeOfDay ' use only the time portion '
Else
MsgBox("Could not understand the value in the time box. Using midnight.")
End If
Dim sql As String = "INSERT INTO dt (date) VALUES (@DateTime)"
Dim sqlCmd As New SqlCommand(sql, sqlConn)
sqlCmd.Parameters.Add(New SqlParameter With {.ParameterName = "@DateTime", .SqlDbType = SqlDbType.DateTime, .Value = dt})
'TODO: ExecuteNonQuery
2つのテキストボックスのテキストの間にスペースが必要です。
insert into dt (date) values('" & DateTimePicker1.Text & " " & TextBox1.Text & "')
特定のカルチャをデータベースに正しく挿入するには、日付をフォーマットする必要があります。または、などのカルチャーニュートラルな文字列を使用しdd-MMM-yyyy
ます。
最初のステップは、からDateTimeを作成するDateTimePicker1.Text
ことです-ParseExactTextBox1.Text
を使用できます。次に、DateTimeを次のようにフォーマットします-より標準的なフォーマットについては、MSDNのこの記事を確認してください:標準の日付と時刻のフォーマット文字列.ToString("G")
同様の問題がここで説明されています。