【发布时间】:2011-02-26 22:53:36
【问题描述】:
我正在尝试制作一个使用 VB.NET 连接到 MySQL 数据库的非常简单的程序。我的程序只有一个表格和一个标签。我将我的 MySQL 数据库设置为有一个表和一个字段(一个 VARCHAR)
称为“Tab1”。我使用 PHPMyAdmin 将值“CLOSED”手动插入到 Tab1 字段中。我希望我的程序将字段的值更改为 OPEN/CLOSED 并且我还希望我的表单上的标签文本为
点击时也会发生变化。
到目前为止,我已将 MySQL.data 引用添加到我的项目中并添加了:
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
致General_Declarations
我还声明了一个包含 MySQL 连接的全局变量:
Public Class Form1
Dim conn As New MySqlConnection
这是我连接到 MySQL 的函数:
Private Function Connect(ByVal server As String, ByRef user As String, ByRef password As String, ByRef database As String)
' Connection string with MySQL Info
conn.ConnectionString = "server=" + server + ";" _
& "user id=" + user + ";" _
& "password=" + password + ";" _
& "database=" + database + ";"
Try
conn.Open()
Return True
Catch ex As MySqlException
Return MsgBox(ex.Message)
End Try
End Function
我让程序在 Form_Load 上连接到 MySQL,如下所示:
Connect("db4free.net", "boomun", "*******", "boomdb")
它连接得很好,但这是我遇到问题的地方......我希望当我单击 Label1 时该字段从 CLOSED 更改为 OPEN。确实如此,但它不会在第二次单击时变回来。不知何故,我需要一个工作代码来更新表中的 Tab1 字段。
这是我目前所拥有的:
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As MySqlDataReader
Dim SQL As String
SQL = "SELECT * FROM `boomtable` WHERE `Tab1` = 'CLOSED'"
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
Try
myData = myCommand.ExecuteReader()
myData.Read()
If myData.HasRows = 0 Then
' *** UPDATE boomtable SET Tab1 = CLOSED WHERE Tab1 = OPEN ***
Label1.Text = "CLOSED"
myData.Close()
Else
Label1.Text = "OPEN"
' *** UPDATE boomtable SET Tab1 = OPEN WHERE Tab1 = CLOSED ***
myData.Close()
End If
Catch ex As MySqlException
MsgBox(ex.Message)
End Try
End Sub
那条 UPDATE 行对我不起作用...谁能提供一个工作代码?谢谢我真的很感激!
以下是项目的全部代码:
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
Public Class Form1
Dim conn As New MySqlConnection
Private Function Connect(ByVal server As String, ByRef user As String, ByRef password As String, ByRef database As String)
' Connection string with MySQL Info
conn.ConnectionString = "server=" + server + ";" _
& "user id=" + user + ";" _
& "password=" + password + ";" _
& "database=" + database + ";"
Try
conn.Open()
Return True
Catch ex As MySqlException
Return MsgBox(ex.Message)
End Try
End Function
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As MySqlDataReader
Dim SQL As String
SQL = "SELECT * FROM `boomtable` WHERE `Tab1` = 'CLOSED'"
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
Try
myData = myCommand.ExecuteReader()
myData.Read()
If myData.HasRows = 0 Then
' *** UPDATE boomtable SET Tab1 = CLOSED WHERE Tab1 = OPEN ***
Label1.Text = "CLOSED"
myData.Close()
Else
Label1.Text = "OPEN"
' *** UPDATE boomtable SET Tab1 = OPEN WHERE Tab1 = CLOSED ***
myData.Close()
End If
Catch ex As MySqlException
MsgBox(ex.Message)
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Connect("db4free.net", "boomun", "boom123", "boomdb")
End Sub
End Class
【问题讨论】:
-
您如何“调用”
UPDATE声明?看起来你只是在评论中有一条 sql 语句...... -
它只是一个评论,因为它不起作用....我问的是我应该做什么..这就是我遇到的问题。