2016-09-29 5 views
0

datetimepickerVB.NETに入力すると、データベースにデータを挿入するにはどうすればよいですか?私は Format(name_of_the_datetimepicker.Value, "yyyy-MM-dd")私のSQLステートメントでそれを変換しようとしましたが、どこが間違っていたのか分かりません。mysql datetimepickerにデータを挿入できません

Imports MySql.Data.MySqlClient 
    Public Class frmMain 
    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles  MyBase.Load 

    If Not conn Is Nothing Then 
     conn.Close() 
    End If 

    conn = New MySqlConnection("Data Source=" & Server & ";user id=" & UserName & ";password=" & PassWord & ";database=" & DatabaseName & ";") 

    Try 
     conn.Open() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 


    End Sub 

    Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click 
    Dim cmdSave As MySqlCommand 
    Dim sql As String 
    sql = "INSERT INTO (rental_date, inventory_id, customer_id, return_date, staff_id) VALUES ('" & Format(dt_picker_rental_date.Value, "yyyy-MM-dd") & "', '" & txt_inventory_id.Text & "', '" & txt_customer_id.Text & "', '" & Format(dt_picker_return_date.Value, "yyyy-MM-dd") & "', '" & txt_staff_id.Text & "')" 


    Try 
     cmdSave = New MySqlCommand(sql, conn) 
     cmdSave.ExecuteNonQuery() 

     MsgBox("Success!") 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
    End Sub 
+0

、 'databases'は、独自のフォーマットを持っている(それがあれば、フィールドのデータ型であります'datetime'にあります)。あなたはここで何を達成したいのですか? –

+2

「DateTimePicker」を使用してデータベースにデータを挿入しません。ユーザーが日付を選択できるようにするには、 'DateTimePicker'を使用し、その日付から' DateTime'値を取得します。その「DateTime」で何をするかは、「DateTimePicker」とは関係ありません。同様に、他のユーザー入力を挿入するのと同じ方法で、 'DateTime'値をデータベースに挿入します:パラメータを使用します。 'DateTime'値または他のデータがどこから来るのかは無関係です。パラメータの使用方法を学び、問題は解決します。 – jmcilhinney

答えて

1

は、SQLコードにデータを挿入する文字列の連結を使用しないでください。

は、ここに私のコードです。常にパラメータを使用します。パラメータはすべてのデータをバイナリ形式に維持するので、formatは決して問題になりません。さらに重要なことは、SQLインジェクションから保護されていることです。このようになります日付を、使用:

Dim command As New MySqlCommand("INSERT INTO MyTable (DateColumn) VALUES (@DateColumn)", connection) 

command.Parameters.AddWithValue("@DateColumn", myDateTimePicker.Value) 

お時間なしでちょうど日付を挿入したい場合は、代わりにちょうどValueのを使用しています。ここでADO.NETパラメータの

さらに詳しい情報:

http://jmcilhinney.blogspot.com.au/2009/08/using-parameters-in-adonet.html

0

これを試してみてください。それはあなたを助けるかもしれません。

cmd.Parameters.Add(「日付」、OleDbType.DBDate)どんなにあなたがそれをフォーマットする方法.Valueの= DateTimePicker1.Value

関連する問題