记录一下今天的学习内容。
前置条件(括号里是我用的):Visual Studio (2022)、Mysql (8.0.33 Community Server)、Navicat Premium (16)
1. 开发准备
首先,打开Visual Studio,选择控制台应用并创建,框架应该影响不大,我用的.net 6.0
然后新建一个名为MysqlDbContext.cs的项。
打开 工具 -> NuGet包管理器 -> 管理解决方案的NuGet程序包,搜索Mysql.Data并根据自身情况选择版本安装,至此,开发基础准备完成。
2. 创建测试用数据库
打开Navicat,新建连接到mysql
创建test数据库,在数据库中创建student表,添加a(int), b(int)两个字段。
完成后打开表,并插入两行数据,至此,数据库准备完成
3. C#的Mysql数据库连接与交互
我们在MysqlDbContext.cs中添加数据库相关的操作方法
using MySql.Data.MySqlClient;//添加引用 namespace MysqlTest { internal class MysqlDbContext { MySqlConnection conn = default!;//保存连接的数据库 /// <summary> /// 获取一个已Open()的数据库对象 /// </summary> /// <returns></returns> public MySqlConnection getConn() { string connstr = "server=localhost;port=3306;user=root;password=123456;database=test;Charset=utf8;"; conn = new MySqlConnection(connstr); conn.Open(); return conn; } } }
然后回到Program.cs,创建对象,调用getConn()方法,调试程序,不报错应该就没问题。
static void Main(string[] args) { var a = new MysqlDbContext(); a.getConn(); }
接着在MysqlDbContext.cs中添加如下代码,实现CURD中的Create()
/// <summary> /// 连接并生成命令对象 /// </summary> /// <param name="sql"></param> /// <returns></returns> public MySqlCommand command(string sql) { MySqlCommand cmd = new MySqlCommand(sql, getConn()); return cmd; } /// <summary> /// 增 操作 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int Create(string sql = "insert into student values('123','123')") { return command(sql).ExecuteNonQuery(); }
/// <summary> /// 关闭连接 /// </summary> public void DbClose() { conn.Close(); }
回到主函数中调用并调试,此时使用Navicat观察可以看到数据表中新增了一行(123,123)记录,表示成功。
a.Create(); a.DbClose();
接着给MysqlDbContext.cs添加如下代码,测试方式与上文同理,案例SQL语句已经放在了方法参数的初值上
/// <summary> /// 删 操作 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int Delete(string sql = "Delete from student where a = 4") { return command(sql).ExecuteNonQuery(); } /// <summary> /// 改 操作 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int Update(string sql = "UPDATE student set a = 4 WHERE b = 5;") { return command(sql).ExecuteNonQuery(); } /// <summary> /// 查 操作 /// </summary> /// <param name="sql"></param> public void Read(string sql = "select * from student") { MySqlDataReader mdr = command(sql).ExecuteReader(); while (mdr.Read()) { Console.WriteLine(mdr[0].ToString()); Console.WriteLine(mdr[1].ToString()); } }
通过以上内容,可以使用C#对Mysql数据库进行增删改查操作。
参考资料:
- https://www.cnblogs.com/RioTian/p/15581594.html
- https://blog.csdn.net/weixin_43453221/article/details/109626769