【问题标题】:connecting to mysql in vb.net在 vb.net 中连接到 mysql
【发布时间】:2012-04-10 17:25:44
【问题描述】:

我试图在 Visual Basic 2010 中从 VB.NET 连接 MySql。我想查询 db 只是为了获得一个返回,即单击按钮后对我的 proID 的响应。它成功显示连接已建立,但我似乎无法对其运行任何 sql 查询。可能出了什么问题?

这是我从即时窗口得到的错误:

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

假设按键事件中的 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

【问题讨论】:

    标签: mysql vb.net visual-studio connector-net


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

      • 我只想从数据库中获取 1 个字段。我得到了proID,我想拿价格。是否可以只获取 1 个字段?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多