0
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click
    Dim scan As String = "select ProductCode from products where ProductCode = '" & TextBox1.Text & "';"
    connection.Open()
    Dim cmd = New MySqlCommand(scan, connection)
    Dim dr As MySqlDataReader = cmd.ExecuteReader
    If dr.Read = True Then
        MsgBox("Match found")
        connection.Close()
        Dim insert As String = "insert into salesreport (ProductName,ProductPrice) select products.ProductName,products.ProductPrice from products where products.ProductCode = '" & TextBox1.Text & "';"
        connection.Open()
        da = New MySqlDataAdapter(insert, connection)
        da.Fill(ds, "salesreport")
        DataGridView1.DataSource = ds
        DataGridView1.DataMember = "salesreport"
        connection.Close()
    Else
        connection.Close()
        MsgBox("No match found")
        TextBox1.Text = ""
        TextBox1.Select()
    End If
End Sub
4

1 に答える 1

0

INSERTステートメントはレコードを返しません。
この状況では、DataAdapterを使用してレコードを挿入する意味はありません。

MySqlCommand.ExecuteNonQueryメソッドを使用してレコードを挿入し、追加された行をMySqlDataAdapterで読み取ります

また、データベースエンジンのSQLテキストを作成して使用するために、ユーザーが入力したテキストを連結しないでください。コードを使用して、SQLインジェクション攻撃を簡単に作成できます。

    Dim scan As String = "select ProductCode from products " + 
                         "where ProductCode = ?prodCode"
    connection.Open()
    Dim cmd = New MySqlCommand(scan, connection)
    cmd.Parameters.AddWithValue("?prodCode", TextBox1.Text)
    ..........

    Dim insert As String = "insert into salesreport (ProductName,ProductPrice) " + 
                "select products.ProductName,products.ProductPrice from products " +
                "where products.ProductCode = ?prodCode"

    cmd = new MySqlCommand(insert, connection)
    cmd.Parameters.AddWithValue("?prodCode", TextBox1.Text)
    cmd.ExecuteNonQuery() 

    da = New MySqlDataAdapter(scan, connection)
    da.SelectCommand.Parameters.AddWithValue("?prodCode", TextBox1.Text)
    da.Fill(ds, "salesreport")

    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "salesreport"
于 2012-11-11T15:16:35.033 に答える