设为首页 收藏本站
查看: 825|回复: 0

[经验分享] C#的MySQL操作工具类

[复制链接]

尚未签到

发表于 2018-10-9 06:55:14 | 显示全部楼层 |阅读模式
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using MySql.Data.MySqlClient;
  using System.Data;
  namespace www.xinduofen.com
  {

  >  {
  private const string serverIP = "localhost";//mysql服务器的IP地址
  private const string serverPort = "3306";//mysql服务器的端口
  private const string userName = "LGQ";//mysql服务器的用户名
  private const string userPassword = "lgq";//mysql服务器的用户密码
  ///
  /// MySqlOperateTool工具类的测试方法(供使用MySqlOperateTool工具类的人员进行参考)
  ///
  public static void mySqlOperateToolTest() {
  MySqlConnection dbConnection = MySqlOperateTool.getConnection("test");
  if (dbConnection != null)
  {
  //创建一个事务
  MySqlTransaction transaction = MySqlOperateTool.beginTransaction(dbConnection);
  try
  {
  string sql = "insert into testTable values(1001,'张三','男')";
  MySqlOperateTool.executeNonQuery(sql, dbConnection);
  sql = "insert into testTable values(1002,'李四','女')";
  MySqlOperateTool.executeNonQuery(sql, dbConnection);
  ////模拟异常
  //int aa = 0;
  //int bb = 10 / aa;
  //提交事务
  MySqlOperateTool.transactionCommit(transaction);
  }
  catch (Exception)
  {
  //回滚事务
  MySqlOperateTool.transactionRollback(transaction);
  }
  MySqlOperateTool.closeConnection(dbConnection);
  }
  //MySqlConnection dbConnection = MySqlOperateTool.getConnection("test");
  //if (dbConnection != null)
  //{
  //    string sql = "select count(id) from testTable";
  //    object resultSetCnt = MySqlOperateTool.getSingleObject(sql, dbConnection);
  //    if (resultSetCnt != null)
  //    {
  //        System.Console.WriteLine("resultSetCnt:" + (long)resultSetCnt);
  //    }
  //    sql = "select * from testTable";
  //    MySqlDataReader dataReader = MySqlOperateTool.getDataReader(sql, dbConnection);
  //    if (dataReader!=null)
  //    {
  //        while (dataReader.Read())
  //        {

  //            int>  //            string name = (string)dataReader["name"];
  //            string sex = (string)dataReader["sex"];
  //            System.Console.WriteLine("id:"+id+" name:"+name+"   sex:"+sex);
  //        }
  //    }
  //    MySqlOperateTool.closeConnection(dbConnection);
  //}
  //MySqlConnection dbConnection = MySqlOperateTool.getConnection("test");
  //if (dbConnection != null)
  //{
  //    DataSet dataset = new DataSet();//定义一个DataSet
  //    string sql = "select * from testTable";
  //    bool resultFlag = MySqlOperateTool.dataAdappterDataSet(sql,dataset,"persons", dbConnection);
  //    if (resultFlag)
  //    {
  //        foreach (DataRow therow in dataset.Tables["persons"].Rows)
  //        {

  //            int>  //            string name = (string)therow["name"];
  //            string sex = (string)therow["sex"];

  //            System.Console.WriteLine("id:" +>  //        }
  //    }
  //    MySqlOperateTool.closeConnection(dbConnection);
  //}
  //MySqlConnection dbConnection = MySqlOperateTool.getConnection("test");
  //if (dbConnection != null)
  //{
  //    DataSet dataset = new DataSet();//定义一个DataSet
  //    string sql = "select * from testTable";
  //    //获得一个空的用于更新的类对象
  //    MySqlCommandBuilder commandBuilder = MySqlOperateTool.dataAdappterDataSetUpdate(sql, dataset, "persons", dbConnection);
  //    if (commandBuilder!=null)
  //    {
  //        //更新数据库的内容(假设数据库中有两行以上的人员信息)
  //        dataset.Tables["persons"].Rows[0]["name"] = "天机小红";
  //        dataset.Tables["persons"].Rows[0]["sex"] = "女";
  //        dataset.Tables["persons"].Rows[1]["name"] = "小李分刀";
  //        dataset.Tables["persons"].Rows[1]["sex"] = "男";
  //        commandBuilder.DataAdapter.Update(dataset, "persons");
  //    }
  //    MySqlOperateTool.closeConnection(dbConnection);
  //}
  //MySqlConnection dbConnection = MySqlOperateTool.getConnection("test");
  //if (dbConnection != null)
  //{
  //    DataSet dataset = new DataSet();//定义一个DataSet
  //    string sql = "select * from testTable";
  //    //获得一个空的用于更新的类对象
  //    MySqlCommandBuilder commandBuilder = MySqlOperateTool.dataAdappterDataSetUpdate(sql, dataset, "persons", dbConnection);
  //    if (commandBuilder != null)
  //    {
  //        //向数据库中添加内容
  //        DataRow datarow = dataset.Tables["persons"].NewRow();//以此表的字段定义一个新的一行数据
  //        datarow["id"] = 1003;
  //        datarow["name"] = "张三";
  //        datarow["sex"] = "男";
  //        dataset.Tables["persons"].Rows.Add(datarow);
  //        datarow = dataset.Tables["persons"].NewRow();//以此表的字段定义一个新的一行数据
  //        datarow["id"] = 1004;
  //        datarow["name"] = "李四";
  //        datarow["sex"] = "女";
  //        dataset.Tables["persons"].Rows.Add(datarow);
  //        commandBuilder.DataAdapter.Update(dataset, "persons");
  //    }
  //    MySqlOperateTool.closeConnection(dbConnection);
  //}
  //MySqlConnection dbConnection = MySqlOperateTool.getConnection("test");
  //if (dbConnection != null)
  //{
  //    DataSet dataset = new DataSet();//定义一个DataSet
  //    string sql = "select * from testTable";
  //    //获得一个空的用于更新的类对象
  //    MySqlCommandBuilder commandBuilder = MySqlOperateTool.dataAdappterDataSetUpdate(sql, dataset, "persons", dbConnection);
  //    if (commandBuilder != null)
  //    {
  //        //从数据库中删除内容
  //        DataRow datarow = dataset.Tables["persons"].Rows[2];
  //        datarow.Delete();
  //        datarow = dataset.Tables["persons"].Rows[3];
  //        datarow.Delete();
  //        commandBuilder.DataAdapter.Update(dataset, "persons");
  //    }
  //    MySqlOperateTool.closeConnection(dbConnection);
  //}
  }
  ///
  /// 获取数据库连接对象
  ///
  /// 传入的数据库名
  /// 返回值为null代表获取连接失败
  public static MySqlConnection getConnection(string dbName)
  {
  MySqlConnection dbConnection = null;
  if (string.IsNullOrEmpty(dbName))//如果传入的参数异常
  {
  return null;
  }
  string connectStr = "Data Source=" + serverIP + ";Port=" + serverPort + ";User;Password=" + userPassword + ";Database=" + dbName + ";CharSet=utf8;";
  try {
  MySqlConnection connection = new MySqlConnection(connectStr);
  connection.Open();
  //获得mysql数据库连接对象成功
  dbConnection = connection;
  }catch(Exception){
  System.Console.WriteLine("C#获得mysql数据库连接对象时产生了异常!");
  }
  return dbConnection;
  }
  ///
  /// 创建一个事务,并且开始执行事务
  ///
  /// 数据库连接对象
  /// 返回为null代表创建事务失败
  public static MySqlTransaction beginTransaction(MySqlConnection dbConnection)
  {
  MySqlTransaction transaction = null;
  if (dbConnection == null)
  {
  return null;
  }
  try
  {
  transaction = dbConnection.BeginTransaction();//创建事务,并且开始执行事务
  }
  catch (Exception) {
  Console.WriteLine("创建事务时产生了异常!");
  }
  return transaction;
  }
  ///
  /// 提交事务
  ///
  /// 与一个事务相关的对象
  public static void transactionCommit(MySqlTransaction transaction)
  {
  try
  {
  //提交事务
  transaction.Commit();
  }
  catch (Exception)
  {
  Console.WriteLine("提交事务时产生了异常!");
  }
  }
  ///
  /// 回滚事务
  ///
  /// 与一个事务相关的对象
  public static void transactionRollback(MySqlTransaction transaction)
  {
  try
  {
  //回滚事务
  transaction.Rollback();
  }
  catch (Exception)
  {
  Console.WriteLine("回滚事务时产生了异常!");
  }
  }
  ///
  /// 关闭数据库的连接
  ///
  /// 数据库连接对象
  public static void closeConnection(MySqlConnection dbConnection)
  {
  //如果连接不为空
  if (dbConnection != null)
  {
  try {
  dbConnection.Close();
  }catch(Exception){
  System.Console.WriteLine("C#关闭mysql数据库连接对象时产生了异常!");
  }
  }
  }
  ///
  /// 查询单个信息
  ///
  /// sql查询语句
  /// 数据库连接对象
  ///
  /// 如果返回值为null代表查询失败;
  /// 此方法只能返回一个值,主要用于查行数,等其他用途(传入的参数均不能为空);
  /// 返回 Object 类型的数据,执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行;
  ///
  public static Object getSingleObject(string sql, MySqlConnection dbConnection)
  {
  Object result = null;
  if (string.IsNullOrEmpty(sql) || dbConnection == null)//如果传入参数不合法
  {
  return null;
  }
  try
  {
  MySqlCommand command = new MySqlCommand(sql, dbConnection);//创建数据库执行命令语句对象
  result = command.ExecuteScalar();//此命令只会返回一个值
  }
  catch (Exception)//如果sql命令执行失败
  {
  Console.WriteLine("sql查询语句不合法或者数据库连接对象异常!");
  }
  return result;//返回读到的值
  }
  ///
  /// 执行sql语句
  ///
  /// sql执行语句
  /// 数据库连接对象
  ///
  /// 返回值为0代表sql命令执行后对数据库无任何影响,如果返回值大于0代表sql命令执行后对数据库产生了影响;
  /// 此方法只能返回一个值(指令在数据库影响的行数),主要用于执行 insert、delete、alter操作;
  ///
  public static int executeNonQuery(string sql, MySqlConnection dbConnection)
  {
  //sql语句执行后影响的行数,初始化为0
  int resultCnt = 0;
  if (string.IsNullOrEmpty(sql) || dbConnection == null)//如果传入参数不合法
  {
  return 0;
  }
  try
  {
  MySqlCommand command = dbConnection.CreateCommand();//创建数据库执行命令语句对象
  command.CommandText = sql;//执行相关的sql语句
  resultCnt = command.ExecuteNonQuery();//此命令无查询功能
  }
  catch (Exception)//如果sql命令执行失败
  {
  Console.WriteLine("sql查询语句不合法或者数据库连接对象异常!");
  }
  return resultCnt;//返回影响的行数
  }
  ///
  /// 查询多行信息
  ///
  /// sql查询语句
  /// 数据库连接对象
  ///
  /// 返回为null,代表查询失败,返回 MySqlDataReader 类型的数据,主要用于检索多行值;
  /// 此方法只能返回 MySqlDataReader 类型的数据,只能一行一行的读数据;
  ///
  public static MySqlDataReader getDataReader(string sql, MySqlConnection dbConnection)
  {
  MySqlDataReader data_read = null;
  if (string.IsNullOrEmpty(sql) || dbConnection == null)//如果传入参数不合法
  {
  return null;
  }
  try
  {
  MySqlCommand command = dbConnection.CreateCommand();//创建数据库执行命令语句对象
  command.CommandText = sql;//执行相关的sql语句
  data_read = command.ExecuteReader();//读取数据库中的数据
  }
  catch (Exception)//如果sql命令执行失败
  {
  Console.WriteLine("sql查询语句不合法或者数据库连接对象异常!");
  }
  return data_read;//返回读到的数据
  }
  ///
  /// 此方法是向传入的 dataset 中填入数据,“不支持更新功能”
  ///
  /// sql查询语句
  /// 用于存储查询信息的数据集缓存区
  /// 是dataset要缓存查询信息的DataTble名称
  /// 数据库连接对象
  /// 查询成功返回true,失败返回false
  public static bool dataAdappterDataSet(string sql, DataSet dataset, string table_name, MySqlConnection dbConnection)
  {
  //初始化查询失败
  bool result = false;
  if (string.IsNullOrEmpty(sql) || dataset == null || string.IsNullOrEmpty(table_name) || dbConnection==null)
  {
  return false;
  }
  try
  {
  //定义将数据库的数据匹配到DataSet的适配器对象
  MySqlDataAdapter data_adappter = new MySqlDataAdapter(sql, dbConnection);
  data_adappter.Fill(dataset, table_name);
  result = true;//查询成功
  }
  catch (Exception)//如果sql命令执行失败
  {
  Console.WriteLine("sql查询语句不合法或者数据库连接对象异常!");
  }
  return result;//返回查询结果
  }
  ///
  /// 此方法是向传入的 dataset 中填入数据,“支持更新功能”,执行更新之前不能断开与数据库的连接
  ///
  /// sql查询语句
  /// 用于存储查询信息的数据集缓存区
  /// 是dataset要缓存查询信息的DataTble名称
  /// 数据库连接对象
  /// 返回一个 MySqlCommandBuilder 对象,可以用来进行更新操作,将内存dataset中改变的数据同步到数据库中
  public static MySqlCommandBuilder dataAdappterDataSetUpdate(string sql, DataSet dataset, string table_name, MySqlConnection dbConnection)
  {
  MySqlCommandBuilder commandBuilder = null;
  if (string.IsNullOrEmpty(sql) || dataset == null || string.IsNullOrEmpty(table_name) || dbConnection == null)
  {
  return null;
  }
  try
  {
  //定义将数据库的数据匹配到DataSet的适配器对象
  MySqlDataAdapter data_adappter = new MySqlDataAdapter(sql, dbConnection);
  MySqlCommandBuilder builder = new MySqlCommandBuilder(data_adappter);
  data_adappter.Fill(dataset, table_name);
  commandBuilder = builder;//查询成功
  }
  catch (Exception)//如果sql命令执行失败
  {
  Console.WriteLine("sql查询语句不合法或者数据库连接对象异常!");
  }
  return commandBuilder;//查询结束,返回commandBuilder
  }
  }
  }
  内容来自:越康体育


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-618109-1-1.html 上篇帖子: 基于GTID的MySQL多源复制配置 下篇帖子: mysql主从同步延迟原因及解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表