【C#】WinForm操作MySQL本地数据库方法


1. 开发环境说明

  • 数据库:MySQL Workench 8.0.31
  • 开发平台:Visual Studio 2017
  • 目标框架:.Net Framwork 4.7.2
  • 编程语言:Visual C#

2. 创建MySQL本地数据库

1)软件下载

官网上提供了两个安装包,两者的区别在于前者需要连网在线安装,后者可离线安装,通常网络正常时选择第一个即可。

Mysql安装包下载界面

下载链接:mysql-installer-web-community-8.0.31.0

2)安装软件

MySQL可以兼容不同开发环境,根据自己的开发语言选择相应组件包,一般每个组件选择相同的版本,以下为全量组件包安装成功后的界面:

Mysql安装成功界面

3)创建数据库

服务器地址: 127.0.0.1 (默认localhost)
端口号: 3306 (默认3306)
用户名: admin (默认root)
密码: 123456 (用户自定义)
数据库名称:test (用户自定义)
数据表名称:table (用户自定义)

Mysql数据库界面

参考方法:MySQL创建数据库操作

3. 设计WinForm交互界面

1)用户登录界面

  • 用户输入框:需要记录已输入的内容;
  • 密码输入框:需要记录已输入的内容;
  • 登录按钮:点击事件时关闭当前窗口,连接并跳加载数据库界面;
  • 退出按钮:点击事件时关闭当前窗口,清空用户和密码信息;
  • 关闭窗口:同退出按钮。

登录界面

Tips:将密码输入框的PasswordChar属性设置为*,即可实现隐式显示密码。

2)数据操作界面

  • 查询按钮:查询数据库中指定数据表的所有元素,并添加到ListView显示;
  • 返回按钮:点击事件关闭当前窗口,断开与数据库的连接,并加载登录界面;
  • 关闭窗口:同返回按钮。

可以使用工具箱中的公共控件->ListView或数据->DataGridView来实现数据可视化,相比之下,ListView的显示效果更优。

数据库界面

参考方法:C# WinForm ListView用法

4. 操作MySQL数据库内容

1)连接数据库

  • 连接方法:
/// <summary>
/// 连接数据库
/// </summary>
/// <param name="user"></param>
/// <param name="password"></param>
private bool Login(String username, String password)
{
    //记录用户输入
    InputUserName = username;
    InputPassWord = password;

    //创建Myslq连接
    MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
    builder.UserID = username;              //用户名
    builder.Password = password;            //用户密码
    builder.Server = "127.0.0.1";           //服务器地址
    builder.Port = 3306;                    //端口号
    builder.Database = "test";              //数据库名称
    MysqlConnector = new MySqlConnection(builder.ConnectionString);
    try
    {
        MysqlConnector.Open();
        Console.WriteLine("MySql数据库连接成功!");
        return true;
    }
    catch (MySqlException ex)
    {
        Console.WriteLine(ex.Message);
        return false;
    }
}

参考方法:官网连接MySQL方法示例

  • 源码分析:

将连接操作封装成一个方法,使用构建数据库信息对象的方法进行连接,便于传入用户在登录界面输入的信息,只需在处理登录按钮事件时调用此方法。

  • 测试结果:

上述为通过源码的方法连接数据库,也可以通过Visual Studio的服务器资源管理器进行连接测试。

连接测试结果

2)查询数据库

  • 查询方法:
/// <summary>
/// 查询数据库
/// </summary>
/// <param name="conn">数据库连接对象</param>
private void Query(MySqlConnection conn)
{
    //查询表格内容命令
    string cmdStr = string.Format("SELECT * FROM test.table");
    //执行数据库操作命令
    MySqlCommand cmd = new MySqlCommand(cmdStr, conn);
    //获取读取器返回的是表中所有数据
    MySqlDataReader table = cmd.ExecuteReader();

    int i = 0;
    Console.WriteLine("表格数据:");
    Console.WriteLine("name" + "\t"  + "id");
    //1)清空表格
    this.listViewDatabase.Items.Clear();
    //2)开始更新
    this.listViewDatabase.BeginUpdate();
    //3)添加数据
    while (table.Read())
    {
        string name = (string)table["name"];
        int id = (int)table["id"];
        Console.WriteLine(name + "\t" + id);

        //从左到右,按列添加
        i++;
        Console.WriteLine("第{0}行:", i);
        ListViewItem item = listViewDatabase.Items.Add(name);
        item.SubItems.Add(id.ToString());
    }
    //4) 结束更新
    this.listViewDatabase.EndUpdate(); 
    //关闭数据表
    table.Close();
}
  • 源码分析:

将上一步连接方法中返回的数据库连接对象传入查询方法,构建MySQL查询语句后,执行数据库操作命令。获取整个数据表内容后,按行读取每一行的元素。例如,本次测试时数据库中添加了3行数据,因此while循环将执行3次。为了避免加载界面过程中可能出现被打断而引起界面闪烁,在所有数据元素添加完成后再刷新界面。

官网链接:MySQL语句中SELECT命令用法

  • 测试结果:

对比本地数据库内容和查询结果一致。

查询结果

5. 待解决问题

在Visual Studio 2017服务器资源管理器中进行数据库可视化操作时,虽然连接数据库存成功:

数据连接

但查看数据库内容时,提示以下信息。根据提示与数据库创建的字符集排序方式有关,但尝试了utf-8、gb2312等格式都无效。

错误:Character set 'utf8mb3' is not supported by .Net Framework.

错误提示
欢迎热心网友能提供分享解决方法,真诚感谢!


小结

在调试过程中,由于事先对MySQL语法不太清楚,直接使用C#进行连接操作,遇到一些不必要的问题。例如,操作数据库时混淆了SELECT语句对象中的数据库名和数据表名。初次学习时建议先了解一下MySQL Workbench软件的基本操作,以及MySQL的常用语句。本文只对数据库进行了简单的查询操作,适合初学者学习C#操作MySQL数据库的方法。

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值