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";
相关推荐
OceanBase数据库官方博客几秒前
OceanBase场景解码系列三|OB Cloud 如何稳定支撑中企出海实现数 10 倍的高速增长?
数据库·oceanbase·分布式数据库
m0_561359679 分钟前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
山岚的运维笔记14 分钟前
SQL Server笔记 -- 第14章:CASE语句
数据库·笔记·sql·microsoft·sqlserver
Data_Journal19 分钟前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
ASS-ASH22 分钟前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm
xixixi777771 小时前
互联网和数据分析中的核心指标 DAU (日活跃用户数)
大数据·网络·数据库·数据·dau·mau·留存率
crossaspeed1 小时前
MySQL-索引
mysql
范纹杉想快点毕业1 小时前
状态机设计与嵌入式系统开发完整指南从面向过程到面向对象,从理论到实践的全面解析
linux·服务器·数据库·c++·算法·mongodb·mfc
这周也會开心2 小时前
Redis与MySQL回写中的数据类型存储设计
数据库·redis·mysql
计算机学姐2 小时前
基于SpringBoot的民宿预定管理系统【三角色+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·mysql·信息可视化·intellij-idea·推荐算法