mysql实战 C# 访问mysql(连载三)

完整例子代码下载地址:

通过网盘分享的文件:自己写的.rar

链接: https://pan.baidu.com/s/1nMC2N6y7jTeusnLz-K6Tww 提取码: abcd

--来自百度网盘超级会员v6的分享

通过一个实例代码,实现c#对mysql数据库的数据录入、保存、修改、删除和数据库事务处理。

未完稍后继续...

一、首先在Navicat 17 for MySQL中建立数据库db1,然后建立表student

在visual studio C# 中,引入mysql库

然后在c#中定义mysql数据库访问类DBHelp.cs

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using MySql.Data.MySqlClient;

namespace WindowsFormsApp1
{
    class DBHelp     //mySQL 访问类
    {
        // 声明私有化变量(外部无法调用 只能在这个类里面使用) 连接字符串
        String connStr = "server=localhost;database=db1;uid=root;pwd=3201319";
        private MySqlConnection conn;
        // 创建私有连接方法 在这个类的下方使用启动和关闭

        private MySqlConnection getConn()     //连接函数
        {
            conn = new MySqlConnection(connStr);
            // State 状态  当状态为关闭的时候打开
            if (conn.State == System.Data.ConnectionState.Closed)
            {
                conn.Open();
            }
            //将创建并且打开的连接返回
            return conn;
        }
        // 创建关闭方法
        private void Close()     //连接关闭函数
        {
            //当conn为空时代表未打开或者没有所以不用关闭 返回空;
            if (conn == null)
            {
                return;
            }
            // 判断当前状态如果为打开或者正在连接的时候 进行关闭;
            if (conn.State == System.Data.ConnectionState.Open || conn.State == System.Data.ConnectionState.Connecting)
            {
                // 关闭
                conn.Close();
            }
        }


        // 封装查询
        public MySqlDataAdapter select(String sql)   // 封装查询
        {
           
            conn = getConn();
            MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
            return adapter;
        }

        // 封装增删改
        public String ExecuteNonQuery(String sql)  // 封装增删改
        {  // 将外面的sql语句传到这里来
            try
            { //捕捉异常
                //创建连接
                conn = getConn();
                MySqlCommand cmd = new MySqlCommand(sql, conn); //这里的sql是由页面里面的sql语句传过来
                int i = cmd.ExecuteNonQuery(); // 返回受影响行数
                //return i; // 将获取到的受影响行数返回到页面中来知道是否完成操作
                if (i > 0)
                {
                    return "true";
                }
                return "false";
            }
            catch (Exception x) // 捕捉到异常返回一个-1的值代表着没有找到东西
            {
                //return -1;
                return x.Message;
            }
            finally
            { //  这里是不管上方是否有错都能跑到这一行
                Close();
            }
        }

        public MySqlDataReader cha(string sql)    //定义返回 只读行
        {
            conn = getConn();
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            MySqlDataReader Reader = cmd.ExecuteReader();
            return Reader;
        }
        ///////////////////////////////////////////////////////////////////////////
        //使用方法
        //string sql_banme = string.Format(@"SELECT bname 宿舍楼名 FROM building where bname='{0}'", name);
        //MySqlDataReader i = db.cha(sql_banme);
        // if (i.HasRows)
        //            {//有则
        //                MessageBox.Show("请勿重复添加");
        //            }
        /////////////////////////////////////////////////////////////////////////


      

        public MySqlConnection MysqlCon
        {
            get
            {
                if (conn == null)
                {
                    conn = new MySqlConnection(connStr);
                    conn.Open();
                }
                else if (conn.State == System.Data.ConnectionState.Closed)
                {
                    conn.Open();
                }
                else if (conn.State == System.Data.ConnectionState.Broken)
                {
                    conn.Close();
                    conn.Open();
                }
                return conn;
            }
        }

        //带事务的  执行sql
        //事务(MySqlTransaction类)
        public void sqlTransaction(string str_sql)
        {
            String connetStr = "server=localhost;database=db1;uid=root;pwd=3201319";
            MySqlConnection conn = new MySqlConnection(connetStr);
            conn.Open();//必须打开通道之后才能开始事务
            MySqlTransaction transaction = conn.BeginTransaction();//事务必须在try外面赋值不然catch里的transaction会报错:未赋值
            Console.WriteLine("已经建立连接");
            try
            {
               
                string sql1 = str_sql;
                MySqlCommand cmd1 = new MySqlCommand(sql1, conn);
                cmd1.ExecuteNonQuery();
            }
            catch (MySqlException ex)
            {
                Console.WriteLine(ex.Message);
                transaction.Rollback();//事务ExecuteNonQuery()执行失败报错,username被设置unique
                conn.Close();
            }
            finally
            {
                if (conn.State != System.Data.ConnectionState.Closed)
                {
                    transaction.Commit();//事务要么回滚要么提交,即Rollback()与Commit()只能执行一个
                    conn.Close();
                }
            }
        }

    }
}

查询数据并绑定到dataGridView

复制代码
 // string connStr = "server=localhost;port=3306;database=db1;user=root;password=3201319;";
            DataSet ds = new DataSet();

            string showBookCommandText = "select * " + "from student";

            MySqlDataAdapter adapter = db.select(showBookCommandText);    //调用类中  的查询函数
            
            adapter.Fill(ds,"student");    //填充到ds
                       
            dataGridView1.DataSource = ds.Tables["student"]; 
            //dataGridView1.DataMember = "student";
相关推荐
爱写代码的阿森12 分钟前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_30 分钟前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白1 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面2 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧2 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈2 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy2 小时前
log4net 数据库存日志正确配置
数据库
liuxiaowei33 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
心平气和量大福大3 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf