• [C#]JCoder.Db4Net.MySql,轻量的MySQL数据处理类库,MIT协议



    架构说明

    JCoder.Db4Net.MySql
    语言C#
    协议MIT
    .Net框架.Net Standard2.1; .Net Framework 4.7.2; .Net 5; .Net 6;
    简述Database类库,一个基于JCoder.Db4Net且支持MySql的库。

    引用类库

    引用类库版本
    JCoder.Db4Net>=2.18.1
    MySql.Data>=8.0.25

    相关类库

    相关类库说明
    JCoder.Db4Net一款为方便使用数据库的操作类库,JCore.Db4Net的新版本。
    JCoder.Db4Net.ORM一个基于JCoder.Db4Net的ORM库,JCore.Db4Net.ORM的新版本。
    JCoder.Db4Net.Sqlite一个基于JCoder.Db4Net且支持Sqlite的库,JCore.Db4Net.Sqlite的新版本。
    JCoder.Db4Net.MySql一个基于JCoder.Db4Net且支持Mysql的库,JCore.Db4Net.MySql的新版本。
    JCoder.Db4Net.SqlServer一个基于JCoder.Db4Net且支持SqlServer的库,JCore.Db4Net.SqlServer的新版本。
    JCoder.Mock4Net一款简易版的用于模拟数据的功能库。

    获取方式

    1. 版本要求:>=2.18.1
    2. 以版本2.18.1为例
    获取方式描述
    Package ManagerInstall-Package JCoder.Db4Net.MySql -Version 2.18.1
    .Net CLIdotnet add package JCoder.Db4Net.MySql --version 2.18.1
    PackageReference
    Paket CLIpaket add JCoder.Db4Net.MySql --version 2.18.1
    Script&Interactive#r "nuget: JCoder.Db4Net.MySql, 2.18.1"
    Cake// Install as a Cake Addin
    #addin nuget:?package=JCoder.Db4Net.MySql&version=2.18.1

    // Install as a Cake Tool
    #tool nuget:?package=JCoder.Db4Net.MySql&version=2.18.1

    使用说明

    主要类与接口

    名称类型描述
    MySqlTexter主要用于Mysql的SQL语句的生成。
    MySqlBuilder主要用于Mysql数据库结构的处理。
    MySqler主要用于Mysql的SQL的执行与处理。
    DbMySql工具类,主要用于Mysql数据库通用的处理。

    创建实例

    1. MySqlFactoryOperator

    需要先在项目里引用或加载MySql官方库MySql.Data.dll。

        IDbOperator _operator = new MySqlFactoryOperator()
        {
            ConnectionString = "server=127.0.0.1;database=test;uid=user;pwd=testpassword;Connect Timeout=18000"
        };
    
    • 1
    • 2
    • 3
    • 4
    1. MySqler
    IDbOperator _operator = new MySqler()
    {
        ConnectionString = "server=127.0.0.1;database=test;uid=useruser;pwd=testpassword;Connect Timeout=18000"
    };
    
    • 1
    • 2
    • 3
    • 4

    MySqler使用

    1. CanConnect(是否能够连接数据库)
      // CanConnect(是否能够连接数据库)
      if (_dber.CanConnect()) { return; }
      
      • 1
      • 2
    2. CreateParameter(创建相应的参数)
      // CreateParameter(创建相应的参数)
      return _dber.CreateParameter( "ID", 123);
      
      • 1
      • 2
    3. Execute(执行SQL)
      // Execute(执行SQL)
      var _parameters = new List()
      {
          _dber.CreateParameter("ID","ID123"),
          _dber.CreateParameter("Name","Name123"),
          _dber.CreateParameter("CreateTime",DateTime.Now),
      };
      var _sql = @"insert table1 (ID,Name,CreateTime) values (@ID,@Name,@CreateTime);";
      var _count = _dber.Execute(_sql, _parameters);//直接执行SQL
      //var _count = _dber.Execute(true,_sql, _parameters);// 使用事务执行SQL
      return _count >= 1;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    4. Execute(执行多条SQL)
      // Execute(执行多条SQL)
      var _parameters = new List()
      {
          _dber.CreateParameter("Value1","ID123"),
          _dber.CreateParameter("Value2","Name123"),
          _dber.CreateParameter("Value3","Name1456"),
      };
      var _sqls = new string[]
      {
          @"insert table3 (Values) values (@Value1);",
          @"insert table3 (Values) values (@Value2);",
          @"insert table3 (Values) values (@Value3);",
      } ;
      var _count = _dber.Execute(_sqls, _parameters);//直接执行SQL
      //var _count = _dber.Execute(true, _sqls, _parameters);// 使用事务执行SQL
      return _count >= 1;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    5. ExecuteTransaction(使用事务执行指定的SQL)
      // ExecuteTransaction(使用事务执行指定的SQL)
      public void ExecuteTransaction()
      {
          _dber.StartTransaction();
      
           try
           {
              for (int i = 0; i < 3; i++)
              {
                   var _parameters = new List()
                   {
                       _dber.CreateParameter("ID",i.ToString()),
                       _dber.CreateParameter("Name","Name123"),
                       _dber.CreateParameter("CreateTime",DateTime.Now),
                   };
                   var _sql = @"insert table1 (ID,Name,CreateTime) values (@ID,@Name,@CreateTime);";
                   var _isSucceed = _dber.ExecuteTransaction(_sql, _parameters);
              }
           }
           catch (Exception ex)
           {
               _dber.RollbackTransaction();
               return;
           }
              
           _dber.FinishTransaction();
      }
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
    6. ExecuteTransaction(使用指定的事务执行指定的SQL)
      // ExecuteTransaction(使用指定的事务执行指定的SQL)
      public void ExecuteTransaction()
      {
          for (int i = 0; i < 3; i++)
          {
              var _key = "Transaction" + i.ToString();
              _dber.StartTransaction(_key);
      
              var _id = i.ToString() + DateTime.Now.ToLongTimeString();
              try
              {
                  var _parameters = new List()
                  {
                      _dber.CreateParameter("ID",_id),
                      _dber.CreateParameter("Name","Name123"),
                      _dber.CreateParameter("CreateTime",DateTime.Now),
                  };
                  var _sql = @"insert table1 (ID,Name,CreateTime) values (@ID,@Name,@CreateTime);";
                  var _isSucceed = _dber.ExecuteTransaction(_key, _sql, _parameters);
              }
              catch (Exception ex)
              {
                  _dber.RollbackTransaction(_key);
                  return;
              }
              
              if (!_dber.FinishTransaction(_key))
              {
                  return;
              }
          }
      }
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
    7. RollbackTransaction(回滚指定的事务)
      // RollbackTransaction(回滚指定的事务)
      public void RollbackTransaction()
      {
          var _key = "Transaction";
          _dber.StartTransaction(_key);
      
          var _id = nameof(RollbackTransaction);
          
          try
          {
              var _parameters = new List()
              {
                  _dber.CreateParameter("ID",_id),
                  _dber.CreateParameter("Name","Name123"),
                  _dber.CreateParameter("CreateTime",DateTime.Now),
              };
              var _sql = @"insert table1 (ID,Name,CreateTime) values (@ID,@Name,@CreateTime);";
              var _isSucceed = _dber.ExecuteTransaction(_key, _sql, _parameters);
          }
          catch (Exception ex)
          {
              _dber.RollbackTransaction(_key);
              return;
          }
          
          _dber.RollbackTransaction(_key);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
    8. QueryTable(查询数据,并返回DataTable)
      public DataTable QueryTable()
      {
          var _parameters = new List()
          {
              _dber.CreateParameter("ID",123),
          };
          var _sql = "select * from table1 where ID=@ID;";
          return _dber.QueryTable(_sql, _parameters);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    9. QueryTables(查询数据,并返回DataSet)
      public DataSet QueryTables()
      {
          var _parameters = new List()
          {
              _dber.CreateParameter("ID",123),
          };
          var _sql = "select * from table1 where ID=@ID;";
          _sql += "select * from table2 where ID=@ID;";
          return _dber.QueryTables(_sql, _parameters);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    10. QueryReader(查询数据,并返回DbDataReader)
    public QueryReader QueryReader()
    {
        var _parameters = new List()
        {
            _dber.CreateParameter("ID",123),
        };
        var _sql = "select * from table1 where ID=@ID;";
        return _dber.QueryReader(_sql, _parameters);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. QueryDictionary (将查询结果的首两列数据转换为Dictionary)
    public Dictionary QueryDictionary()
    {
        var _sql = "select Key,Value from table1 ;";
        return _dber.QueryDictionary(_sql);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. QueryValues (将查询结果的首列数据转换为List)
    public List QueryNames()
    {
        var _sql = "select Names from table1 ;";
        return _dber.QueryValues(_sql);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. QueryValue (将查询值转换为long)
    public List QueryValue()
    {
        var _sql = "select count(1) from table1 ;";
        return _dber.QueryScalar(_sql);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. IsExistData (查询是否存在数据)
    public bool IsExistData()
    {
        var _sql = "select 1 from table1 where id=1;";
        return _dber.IsExistData(_sql);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    MySqlTexter使用

    1. 生成实例
      
      // 用于生成MySql语句
      IDbSqlTexter _sqltexter = new MySqlTexter();
      
      
      • 1
      • 2
      • 3
      • 4
    2. 生成数据库相关的SQL语句
      
      // 生成获取当前数据库信息的SQL语句
      _sqltexter.GetDatabase();
      
       // 生成获取指定数据库信息的SQL语句
      _sqltexter.GetDatabase("database");
      
       // 生成获取数据库信息列表的SQL语句
      _sqltexter.GetDatabaseList();
      
       // 生成创建数据库的SQL语句
      _sqltexter.CreateDatabase("database");
      
       // 生成删除数据库的SQL语句
      _sqltexter.DeleteDatabase("database");
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    3. 生成数据表(Table)相关的SQL语句
      
      // 生成获取当前数据库的指定数据表的数据列信息的SQL语句
      _sqltexter.GetTableColumns("table01");
      // 生成获取指定数据库的指定数据表的数据列信息的SQL语句
      _sqltexter.GetTableColumns("database","table01");
      
       // 生成获取当前数据库的指定数据表信息的SQL语句SQL语句
      _sqltexter.GetTable("table01");
       // 生成获取当前数据库的指定数据表信息的SQL语句SQL语句
      _sqltexter.GetTable("database","table01");
      
       // 生成获取当前数据库的数据表列表的SQL语句
      _sqltexter.GetTableList();
       // 生成获取指定数据库的数据表列表的SQL语句
      _sqltexter.GetTableList("database");
      
       // 生成删除当前数据库的数据表的SQL语句
      _sqltexter.DeleteTable("table01");
       // 生成删除指定数据库的数据表的SQL语句
      _sqltexter.DeleteTable("database","table01");
      
       // 生成创建数据表的SQL语句
      _sqltexter.CreateTable("table01", new List());
       // 生成创建数据表的SQL语句
      _sqltexter.CreateTable("database", "table01", new List());
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
    4. 生成视图(View)相关的SQL语句
      
      // 生成获取当前数据库的指定View的数据列信息的SQL语句
      _sqltexter.GetViewColumns("view01");
      // 生成获取指定数据库的指定View的数据列信息的SQL语句
      _sqltexter.GetViewColumns("database","view01");
      
       // 生成获取当前数据库的指定View信息的SQL语句SQL语句
      _sqltexter.GetView("view01");
       // 生成获取当前数据库的指定View信息的SQL语句SQL语句
      _sqltexter.GetView("database","view01");
      
       // 生成获取当前数据库的View列表的SQL语句
      _sqltexter.GetViewList();
       // 生成获取指定数据库的View列表的SQL语句
      _sqltexter.GetViewList("database");
      
       // 生成删除当前数据库的View的SQL语句
      _sqltexter.DeleteView("view01");
       // 生成删除指定数据库的View的SQL语句
      _sqltexter.DeleteView("database","view01");
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
    5. 生成函数(Function)相关的SQL语句
      
      // 生成获取当前数据库的指定函数信息的SQL语句
      _sqltexter.GetFunction("func01");
      // 生成获取指定数据库的指定函数信息的SQL语句
      _sqltexter.GetFunction("database","func01");
      
       // 生成获取当前数据库的函数列表的SQL语句
      _sqltexter.GetFunctionList();
       // 生成获取指定数据库的函数列表的SQL语句
      _sqltexter.GetFunctionList("database");
      
       // 生成删除当前数据库的Function的SQL语句
      _sqltexter.DeleteFunction("func01");
       // 生成删除指定数据库指定函数的SQL语句
      _sqltexter.DeleteFunction("database","func01");
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    6. 生成存储过程(Procedure)相关的SQL语句
      
      // 生成获取当前数据库的指定存储过程信息的SQL语句
      _sqltexter.GetProcedure("proc01");
      // 生成获取指定数据库的指定存储过程信息的SQL语句
      _sqltexter.GetProcedure("database","proc01");
      
       // 生成获取当前数据库的存储过程列表的SQL语句
      _sqltexter.GetProcedureList();
       // 生成获取指定数据库的存储过程列表的SQL语句
      _sqltexter.GetProcedureList("database");
      
       // 生成删除当前数据库的Procedure的SQL语句
      _sqltexter.DeleteProcedure("proc01");
       // 生成删除指定数据库指定存储过程的SQL语句
      _sqltexter.DeleteProcedure("database","proc01");
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16

    实例使用

    1. 参考JCoder.Db4Net
  • 相关阅读:
    Mysql--索引分类
    使用Docker安装Apollo并使用SpringBoot连接配置中心
    windows批处理笔记一
    [阅读笔记20][BTX]Branch-Train-MiX: Mixing Expert LLMs into a Mixture-of-Experts LLM
    CentOS 7 安装指定版本的python环境
    【FPGA】计数器 —— 时序逻辑
    程序员面试金典 - 面试题 17.12. BiNode
    已经有 MESI 协议,为什么还需要 volatile 关键字?
    算法 day29 回溯5
    MongoDB副本集成员如何复制新数据
  • 原文地址:https://blog.csdn.net/Jack_Law/article/details/126407482