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";
相关推荐
luoluoal8 小时前
基于python的爬虫的贵州菜价可视化系统(源码+文档)
python·mysql·django·毕业设计·源码
老华带你飞8 小时前
考试管理系统|基于java+ vue考试管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
九皇叔叔8 小时前
MySQL 数据库 MVCC 与锁如何联手解决脏读、不可重复读、幻读
数据库·mysql
哈里谢顿8 小时前
mysql索引影响查询速度的示例demo
mysql
WZTTMoon8 小时前
Spring Boot OAuth2 授权码模式开发实战
大数据·数据库·spring boot
阿蒙Amon8 小时前
C#每日面试题-属性和特性的区别
java·面试·c#
赵得C8 小时前
完整 Oracle 12c 分页 Demo(Spring Boot+MyBatis+PageHelper)
spring boot·oracle·mybatis
AI题库8 小时前
PostgreSQL 18 从新手到大师:实战指南 - 1.1 PostgreSQL 18简介
数据库·postgresql
苏琢玉8 小时前
一次受限环境下的 MySQL 数据导出与“可交付化”实践
mysql·php
好记忆不如烂笔头abc8 小时前
Ubuntu 20.04.6上实现远程桌面连接
服务器·网络·数据库