C#与Mysql数据库交互-Mysql配置及增删查改操作

c#与Mysql交互



1. 配置dll文件

image-20220407132954731

image-20220407133057540

2.下载Mysql及图形化辅助界面

本篇博客使用的是phpmyadmin图形化管理工具,利用已经建立好的phpstudy管理工具进行按照。

2.1phpstudy下载

小皮面板(phpstudy)

2.2下载apache和mysql

image-20220407143639309

2.3下载mysql管理工具

image-20220407143712596

2.4启用服务

image-20220407144023107

2.5 phpmyadmin基本操作

image-20220407183019950

image-20220407183211226

image-20220407183259884

2. 引入命名空间

using MySql.Data.MySqlClient;

3.创建相应静态字段

类名Description
MySqlConnection数据库连接类
MySqlCommand对数据库进行执行语句的类
MySqlDataReader提供一种从MySQL数据库单向读取的方法
private static MySqlConnection conn;
private static MySqlCommand cmd;
private static MySqlDataReader reader;

4.MySqlConnection-连接和关闭数据库

4.1连接数据库

MySqlConnection(server,database,user,password)
ParameterDescription
server服务器地址-ip,本地使用localhost就可以
database对应数据库
user进入数据库账号名
password进入数据库密码
charset可选,指定字符编码,遇到中文乱码可能需要修改

conn = new MySqlConnection(connstr);

通过这条语句只是实例化了一个MySqlConnection对象,还需要通过conn.open()进行数据库的连接。

 static void ContoSQL()
        {           
            string connstr = "server=localhost;database=user;user=root;password=root;charset = uft8";
            conn = new MySqlConnection(connstr);
            conn.Open();    //建立连接,打开数据库
            Console.WriteLine("打开数据库成功");
        }

4.2 关闭连接,释放资源

关闭与数据库的连接,但不清理缓存

conn.close();
conn.Dispose()

4.3 其他常见属性

具体详见MySqlConnection Methods

属性描述
ServerVersionsermysql服务器版本
State连接状态
 static void ContoSQL()
        {           
            string connectStr = "server=localhost;database=user;user=root;password=root;";
            conn = new MySqlConnection(connectStr);
            conn.Open();    //建立连接,打开数据库
            Console.WriteLine("ServerVersion: " + conn.ServerVersionser +
"\nState: " + conn.State.ToString());
            conn.Close();

        }

image-20220407163051627

5 数据的增删查改

cmd = new MySqlCommand(sql, conn);//利用sql语句和一个连接对象实例化MysqlDataCommand对象
cmd.ExecuteNonQuery();//执行SQL语句,并返回受影响的行数。一般用在增删改里面
reader=cmd.ExecuteReader();//执行查询语句并将信息传给MysqlDataReader类

5.1 数据插入

string sql="insert into test(字段名1,字段名2) values('22','ChenChen')";   
string sql = "insert into test(username,F1) values('22','ChenChen')";   
 static void InsertSQL(string sql)
        {
            try
            {
                ContoSQL();             
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery(); //执行sql语句
            }
            catch (Exception ex)//如执行出错执行内部语句,执行完后关闭连接
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }

5.2 数据更新

string sql = "update 数据表名 set 字段名 = 'FaFa' where 字段名 = '2002' ";   
string sql = "update test set F1 = 'FaFa' where username = '2002' ";   
static void UpdateSQL(string sql)
        {          
            try
            {
                ContoSQL();  //建立连接             
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery();   //执行sql语句

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }

5.3 数据删除

string sql = "Delete from test where username = '22' "; 
 static void DeleteSQL(string sql)
        {      
            try
            {
                ContoSQL();             
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery();   
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();  
            }

5.4 数据查询

1.几种常见查询语句用法

string sql ="select * from 数据表名 "
string sql = "select * from test";//读取所有行
string sql = "select* from test where username = '2002'"; //读取指定行
string sql = "select* from test where 密码='2'and username=2002";//多个限制条件
string sql = "select username,密码,F1 from test where 密码='2'and username=2002"; //读取指定列
  1. 获取reader数据的方法
方法说明
reader["字段名"]关联数组,通过字段名获取数据返回object类型,需通过.Tostring()转换
reader[num]索引数组,通过读取字段对应的排序,从0开始
reader.GetString("字段名/num")同上作用

更多资料请见MySqlDataReader Class

Console.WriteLine(reader["username"].ToString() +' '+ reader["密码"].ToString()+' '+ reader["F1"].ToString());
Console.WriteLine(reader[0].ToString() +' '+ reader[1].ToString()+' '+ reader[2].ToString());
static void ReadSQL(string sql)
        {
            try
            {
                ContoSQL();
                cmd = new MySqlCommand(sql, conn);
                reader = cmd.ExecuteReader();
                while (reader.Read())   逐行读取数据,当下一行没有数据返回false
                {
                    Console.WriteLine(reader["username"].ToString() +' '+ reader["F1"].ToString()+' '+reader["F2"]);                 
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }

6.增删查改示例

 		using MySql.Data.MySqlClient;//引用命名空间,添加到首行
		private static MySqlConnection conn;
        private static MySqlCommand cmd;
        private static MySqlDataReader reader;


        static void ContoSQL()
        {           
            string connectStr = "server=localhost;database=user;user=root;password=root;";
            conn = new MySqlConnection(connectStr);
            conn.Open();    //建立连接,打开数据库
            Console.WriteLine("打开数据库成功");
        }
        /// <summary>
        /// 读取数据库数据
        /// </summary>
        /// <param name="sql">执行的sql语句</param>

        static void ReadSQL(string sql)
        {
            try
            {
                 ContoSQL();
                 cmd = new MySqlCommand(sql, conn);
                 reader = cmd.ExecuteReader();

                while (reader.Read())   //遍历表中数据
                {
                    Console.WriteLine(reader[0].ToString() +' '+ reader["密码"].ToString()+' '+ reader["F1"].ToString());
             
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void InsertSQL(string sql)
        {
            try
            {
                ContoSQL();                     
                cmd = new MySqlCommand(sql, conn);
				cmd.ExecuteNonQuery();  

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void UpdateSQL(string sql)
        {
            
            try
            {
                ContoSQL();               
                cmd = new MySqlCommand(sql, conn);
                result = cmd.ExecuteNonQuery();

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void DeleteSQL(string sql)
        {
            
            try
            {
                ContoSQL();              
                cmd = new MySqlCommand(sql, conn);
                cmd.ExecuteNonQuery();  
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();   //关闭连接
            }
        }
        static void Main(string[] args)
        {
            string sql = "select username,密码,F1 from test where 密码='2'and username=2002";             
            ReadSQL(sql);
            sql = "select * from test";
            ReadSQL(sql);        
        }

image-20220407182624185

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miracle Fan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值