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 Injection Attacks

    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 回答