1

Visual Basic 2010でVB.NETからMySqlに接続しようとしています。ボタンをクリックすると、proIDへの応答が1つ返されるように、データベースにクエリを実行したいと思いました。接続が確立されたことを正常に示していますが、SQLクエリを実行できないようです。何が間違っていたのでしょうか?

これは私が即時ウィンドウから得たエラーです:

A first chance exception of type 'System.InvalidOperationException' occurred in MySql.Data.dll

keypressイベントからのnumが1001であると仮定しましょう。

Public Class Form1
    Private connStr As String = "server=localhost;" & _
                "user id=root;Password=1234561;" & _
                "database = test"
    Dim num As Integer


Private Sub TextBox1_keypress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    Dim str As String
    If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
        str = TextBox1.Text
        Dim splitVals As String() = str.Split(" ")
        num = splitVals(1)
    End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim query As String = "SELECT * FROM products"
    Dim con As New MySqlConnection(connStr)
    Dim cmd As New MySqlCommand(query)
    Try
        con.Open()
        MessageBox.Show("Database Connected")
        cmd.ExecuteNonQuery()
        cmd.Connection.Close()

        con.Close()
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
End Sub

End Class
4

2 に答える 2

1

このコードを試してください:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim query As String = "SELECT * FROM products"
    Dim con As New MySqlConnection(connStr)
    Dim da as New MySqlDataAdapter() 
    Dim ds as New DataSet
    Try
        con.Open()
        MessageBox.Show("Database Connected")
        da=New MySqlDataAdapter(query,con)
        da.fill(ds,"products") 
        DataGridView1.DataSource=ds.Tables("products")
        con.Close()
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
End Sub
于 2012-03-27T07:40:45.133 に答える
0

ExecuteNonQueryは、データを返さないSQLステートメント(INSERT、UPDATE、DELETEなど)に使用されます。

何を達成したいですか?productテーブルからすべてのレコードをフェッチして、に表示する場合は、次のことdatagridを試してください。

Using xConn as New MySqlConnection(connStr)
    Using xComm as new MySQLCommand()
        xComm.Connection = xConn
        xComm.CommandText = "SELECT * FROM products"
        Using xAdapter as new MySQLDAtaAdapter(xComm)
            Dim ds as new Dataset
            xConn.Open()
            xAdapter.Fill(ds)
            datagridview1.datasource = ds.tables(0)
        End Using
    End Using
End Using

更新1

Dim xPrice as Integer = 0
Using xConn as New MySqlConnection(connStr)
    Using xComm as new MySQLCommand()
        xComm.Connection = xConn
        xComm.CommandText = "SELECT ProductPrice FROM products WHERE proID = @xID"
            xComm.Parameters.AddWithValue("xID", "Value Here")
            xConn.Open()
            xPrice = CInt(xComm.ExecuteScalar())
            xConn.Close
    End Using
End Using

Msgbox xPrice
于 2012-03-27T07:46:09.623 に答える