C#操作MySQL本地数据库方法
1. 开发环境说明
- 数据库:MySQL Workench 8.0.31
- 开发平台:Visual Studio 2017
- 目标框架:.Net Framwork 4.7.2
- 编程语言:Visual C#
2. 创建MySQL本地数据库
1)软件下载
官网上提供了两个安装包,两者的区别在于前者需要连网在线安装,后者可离线安装,通常网络正常时选择第一个即可。
2)安装软件
MySQL可以兼容不同开发环境,根据自己的开发语言选择相应组件包,一般每个组件选择相同的版本,以下为全量组件包安装成功后的界面:
3)创建数据库
服务器地址: 127.0.0.1 (默认localhost)
端口号: 3306 (默认3306)
用户名: admin (默认root)
密码: 123456 (用户自定义)
数据库名称:test (用户自定义)
数据表名称:table (用户自定义)
参考方法:MySQL创建数据库操作
3. 设计WinForm交互界面
1)用户登录界面
- 用户输入框:需要记录已输入的内容;
- 密码输入框:需要记录已输入的内容;
- 登录按钮:点击事件时关闭当前窗口,连接并跳加载数据库界面;
- 退出按钮:点击事件时关闭当前窗口,清空用户和密码信息;
- 关闭窗口:同退出按钮。
Tips:将密码输入框的PasswordChar属性设置为*,即可实现隐式显示密码。
2)数据操作界面
- 查询按钮:查询数据库中指定数据表的所有元素,并添加到ListView显示;
- 返回按钮:点击事件关闭当前窗口,断开与数据库的连接,并加载登录界面;
- 关闭窗口:同返回按钮。
可以使用工具箱中的公共控件->ListView或数据->DataGridView来实现数据可视化,相比之下,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数据库的方法。