首页 > 数据库 >基于C#连接Mysql,并进行增删改查操作

基于C#连接Mysql,并进行增删改查操作

时间:2023-07-12 11:56:57浏览次数:53  
标签:string C# 数据库 Mysql 改查 sql MysqlDbContext public

记录一下今天的学习内容。

前置条件(括号里是我用的):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

标签:string,C#,数据库,Mysql,改查,sql,MysqlDbContext,public
From: https://www.cnblogs.com/Cloudea/p/17546972.html

相关文章

  • 6、Fusing IMU with complementary sensory data
    将惯性测量单元与补充传感器数据融合当接收到除IMU之外的其他信息,例如GPS或视觉信息时,对ESKF进行校正。在一个设计良好的系统中,这应该使惯性测量单元的偏差可观测,并允许ESKF正确地估计它。有许多可能性,最流行的是GPS+IMU、单目视觉+IMU、立体视觉+IMU。近年来,视觉传感器与IMU的组......
  • C# 选择文件选择设置类型示例
     例子:OpenFileDialogdialog=newOpenFileDialog();dialog.Multiselect=false;//该值确定是否可以选择多个文件dialog.Title="请选择文件";dialog.Filter="图像文件(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp;*.jpg......
  • [TM4] TM4C123G Keil5 新建工程指南
    [TM4]TM4C123GKeil5新建工程指南keil新建工程,选择TM4C123GH6PM芯片,然后在CMSIS勾选CORE,DEVICE勾选Startup(如图),来到新工程界面在SourceGroup1里添加main.c,将SourceGroup重命名为user在Target1目录下添加driverlib文件夹、hardware文件夹、sys文件夹、inc文件夹,utils文件夹以......
  • LeetCode -- 918. 环形子数组的最大和
     遇到环形问题一般有两种考虑方法:1.破环成链2.分为数组中间部分和数组两边部分分别考虑本题采用第二种考虑方法,将原数组分为中间部分和两边部分分别考虑。中间部分即为子数组最大和,两边部分计总和减去中间部分最小和。classSolution{public:intma......
  • sharding-jdbc分库连接数优化
    一.背景:配运平台组的快递订单履约中心(cp-eofc)及物流平台履约中心(jdl-uep-ofc)系统都使用了ShardingSphere生态的sharding-jdbc作为分库分表中间件,整个集群采用只分库不分表的设计,共16个MYSQL实例,每个实例有32个库,集群共512个库.当每增加一台客户端主机,一个MYSQl实例最......
  • C# 关于datetime的转换问题
    项目中时常碰到 Convert.ToDateTime报错的情况例如:数据导入时,如果用户胡乱输入,就会出现异常报错。 解决方式:stringinputDate="2023-7-12";DateTimedate=newDateTime();if(DateTime.TryParse(inputDate,outdate)){date=Convert.ToDateTime(inputD......
  • Prettier 配置指南 .prettierrc.json 文件配置指南
    1.在项目根目录下面,新建.prettierrc.json文件2.prettuer配置{"printWidth":100,"tabWidth":2,"useTabs":true,"semi":true,"singleQuote":true,"trailingComma":"none","b......
  • Visual C# 中XML注释换行
    只需将<para>标记用于诸如<summary>、<remarks>或<returns>等标记内即可 ///<summary>///基类(第1行)///<para>说明:(第2行)</para>///<para>封装一些常用的成员(第3行)</para>///<para>前面要用全角空格才能显示出空格来(第4行)</para>///</s......
  • 「解题报告」Codeforces Round #884 (Div. 1 + Div. 2) Editorial
    比赛地址:Dashboard-CodeforcesRound884(Div.1+Div.2)-Codeforces个人评价:这场是构造专场!A.SubtractionGameProblem-A-Codeforces有一堆石子(应该是石子),每次只能拿走\(a\)块或者\(b\)块,最先不能移动的人输,构造一个数\(n\),使得先手必输。两种构造方法:......
  • MySql开启日志 --记录每条执行的SQL语句
    --第一条SETGLOBALlog_output='TABLE';SETGLOBALgeneral_log='ON';--在重启mysql重启Mysql详情请看:(10条消息)如何重启MySQL,正确启动MySQL_mysqlrestart_wuyepiaoxue789的博客-CSDN博客--重启完成之后可以去数据库`Mysql`中的general_log表里查看,也可以执行一下的......