2016-08-16 17 views
0

私はデータベース内にbreakdownという名前の列を持っています。列は「2016-47-16」:私は私のデータベースに私はエラーに 不正な日付値を取得する日付列エラーの挿入日付mysql vb.net

Private Sub BT_SAVE_Click(sender As Object, e As EventArgs) Handles BT_SAVE.Click 

    Dim SQLStatement As String = "INSERT INTO Pannes VALUES(03082016,'" & CB_AV.SelectedItem.ToString() & "','" & TXT_PAN.Text & "','" & TXT_DET.Text & "','" & DateTimePicker1.Value.ToString("yyyy-mm-dd") & "')" 
    SavePann(SQLStatement) 
End Sub 

に問題が内訳を挿入していたときに、それはタイプのは、「日」 です行1の 'DATE' 誰でも手伝ってもらえますか?

答えて

1

月が間違っています。 '2016-47-16'。私はそれがちょっとした価値だと思う。

代わりに.ToString("yyyy-MM-dd")を使用してください。

+0

mr @FloatingKiwiありがとうございます。私は別の質問を持っている:私は取得日が2016年12月8日00:00:00このようなものですすべての内訳含むPDFを生成する場合:私は、時間と分と秒の乗り心地を取得したいとここだけの短い日付を表示があるが、私の列の日付のコード 'のDataRow(DGV_SIT.Columns(4).HeaderText.ToString())= DGV_SIT.Rows(I).Cells(4).Value' –

+0

私はPDF生成に精通していませんよ。あなたのコードで新しい質問として投稿することをお勧めします。 – FloatingKiwi

+0

非常にmychありがとう –

1

大きな挿入文字列の代わりにSQL parametersを使用してください。これはあなたが記述するようなエラーを避けるでしょう。

また、Dateの値を文字列に変換する必要はありません。MySqlがDateの値に変換した場合、 DateTimePicker.Valueを使用してください。

Dim SQLStatement As String = "INSERT INTO Pannes VALUES(@p1,@p2,@p3,@p4,@p5)" 

(私は、パラメータ名を意味のあるものに置き換えることをお勧めします)。

SavePannには、接続とコマンドオブジェクトが自動的に配置されるため、Usingが使用されます。

Using conn as New MySqlConnection 
    conn.ConnectionString = "YourSqlConnectionString" 
    conn.Open() 
    Using cmd as New MySqlCommand 
     cmd.Connection = conn 
     cmd.CommandText = SQLStatement 
     cmd.Prepare() 

     cmd.Parameters.AddWithValue("@p1", 03082016) 
     cmd.Parameters.AddWithValue("@p2", CB_AV.SelectedItem.ToString()) 
     cmd.Parameters.AddWithValue("@p3", TXT_PAN.Text) 
     cmd.Parameters.AddWithValue("@p4", TXT_DET.Text) 
     cmd.Parameters.AddWithValue("@p5", DateTimePicker1.Value) 'No ToString needed' 

     cmd.ExecuteNonQuery() 
    End Using 
End Using