前言

上一节讲了如何使用配置文件+AES加密的方式连接数据库,这一节在上节的基础上继续MySQL的查改增删。

1.编写查询代码并将其放入表格控件

有了之前的经验,这一步就很简单了,只是将查询出来的数据存到Datagridview表格控件中,示例代码如下:

   Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
       Using connection As New MySqlConnection(_connString)
           Try
               connection.Open()
               Dim strsql As String = "SELECT * FROM userlist"
               '*代表所有数据,也可为指定的字段名
               Using cmd As New MySqlCommand(strsql, connection)
                   Using adapter As New MySqlDataAdapter(cmd)
                       Dim dataSet As New DataSet()
                       adapter.Fill(dataSet)
                       If dataSet.Tables.Count > 0 Then
                           DataGridView1.DataSource = dataSet.Tables(0)
                       End If
                   End Using
               End Using
           Catch ex As Exception
               ' 显示异常信息给用户 
               MessageBox.Show($"Error: {ex.Message}")
           End Try
       End Using
   End Sub

运行测试下,如下图,可以看到正常在表格控件中显示了数据。成功也就那么不期而遇了,成就感是我们前进的动力。说多了,继续。。。
查询账号

2.注册一个账号模拟“新增”功能

为了不把密码显示出来,我们把两个密码框PasswordChar属性改为*号。
更改PasswordChar属性
然后为了显示注册结果,将查询那一步放到公共事件以便注册账号后调用将其显示到表格控件中,下面是完整的示例代码:

Imports MySql.Data.MySqlClient

Public Class Form1
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then MsgBox("内容不能为空!") : Exit Sub
        If TextBox2.Text <> TextBox3.Text Then MsgBox("两次输入的密码不一致") : Exit Sub
        Using connection As New MySqlConnection(_connString)
            Try
                connection.Open()
                ' 检查账号是否已存在 
                Dim checkSql As String = "SELECT COUNT(*) FROM userlist WHERE 账号 = @account"
                Using checkCmd As New MySqlCommand(checkSql, connection)
                    checkCmd.Parameters.AddWithValue("@account", TextBox1.Text.Trim())
                    Dim count As Integer = Convert.ToInt32(checkCmd.ExecuteScalar())
                    If count > 0 Then
                        MsgBox("已有相同账号,请修改", vbOKOnly, "提示")
                        Exit Sub
                    End If
                End Using
                ' 插入新用户 
                Dim insertSql As String = "INSERT INTO userlist (账号, 密码) VALUES (@account, @password)"
                Using insertCmd As New MySqlCommand(insertSql, connection)
                    insertCmd.Parameters.AddWithValue("@account", TextBox1.Text.Trim())
                    insertCmd.Parameters.AddWithValue("@password", EncryptString(TextBox2.Text))
                    insertCmd.ExecuteNonQuery()
                    MsgBox("注册成功!", vbOKOnly, "提示")
                End Using
                FetchDataAndPopulateGrid()
            Catch ex As Exception
                MessageBox.Show($"操作失败: {ex.Message}")
            End Try
        End Using
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        FetchDataAndPopulateGrid()
    End Sub

    Public Sub FetchDataAndPopulateGrid()
        Using connection As New MySqlConnection(_connString)
            Try
                connection.Open()
                Dim strsql As String = "SELECT * FROM userlist"
                Using cmd As New MySqlCommand(strsql, connection)
                    Using adapter As New MySqlDataAdapter(cmd)
                        Dim dataSet As New DataSet()
                        adapter.Fill(dataSet)
                        If dataSet.Tables.Count > 0 Then
                            DataGridView1.DataSource = dataSet.Tables(0)
                        End If
                    End Using
                End Using
            Catch ex As Exception
                ' 显示异常信息给用户 
                MessageBox.Show($"Error: {ex.Message}")
            End Try
        End Using
    End Sub
End Class

3.测试运行

注册成功
点击确定后在Datagridview表格控件中显示新增的账号密码数据
显示注册结果
可以看到新增了账号及密码数据,且密码字段存储的是经过AES加密后的数据。


4.下节预告

这一节就写到这里,通过注册一个账号,我们已经掌握如何利用VB.net语言来对MySQL数据库进行连接、查询及新增功能。下一节再来探索如何对MySQL数据库进行修改及删除功能。

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐