C#实现操作MySql数据层类MysqlHelper实例

高洛峰
发布: 2017-01-14 14:33:08
原创
1670人浏览过

本文实例讲述了c#实现操作mysql数据层类mysqlhelper。分享给大家供大家参考。具体如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace VideoWorks.ITmanage.DAL
{
 public abstract class MySqlHelper
 {
  //数据库连接字符串
  public static string Conn = "Database='device_manage';Data Source='localhost';User Id='root';Password='123456';charset='utf8';pooling=true;Allow Zero Datetime=True";
  /// <summary>
  /// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
  /// </summary>
  /// <param name="connectionString">一个有效的连接字符串</param>
  /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  /// <param name="commandParameters">执行命令所用参数的集合</param>
  /// <returns>执行命令所影响的行数</returns>
  public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   MySqlCommand cmd = new MySqlCommand();
   using (MySqlConnection conn = new MySqlConnection(connectionString))
   {
    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
    int val = cmd.ExecuteNonQuery();
    cmd.Parameters.Clear();
    return val;
   }
  }
  /// <summary>
  /// 用现有的数据库连接执行一个sql命令(不返回数据集)
  /// </summary>
  /// <param name="connection">一个现有的数据库连接</param>
  /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  /// <param name="commandParameters">执行命令所用参数的集合</param>
  /// <returns>执行命令所影响的行数</returns>
  public static int ExecuteNonQuery(MySqlConnection connection, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   MySqlCommand cmd = new MySqlCommand();
   PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
   int val = cmd.ExecuteNonQuery();
   cmd.Parameters.Clear();
   return val;
  }
  /// <summary>
  ///使用现有的SQL事务执行一个sql命令(不返回数据集)
  /// </summary>
  /// <remarks>
  ///举例:
  /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  /// <param name="trans">一个现有的事务</param>
  /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  /// <param name="commandParameters">执行命令所用参数的集合</param>
  /// <returns>执行命令所影响的行数</returns>
  public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   MySqlCommand cmd = new MySqlCommand();
   PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
   int val = cmd.ExecuteNonQuery();
   cmd.Parameters.Clear();
   return val;
  }
  /// <summary>
  /// 用执行的数据库连接执行一个返回数据集的sql命令
  /// </summary>
  /// <remarks>
  /// 举例:
  /// MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  /// <param name="connectionString">一个有效的连接字符串</param>
  /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  /// <param name="commandParameters">执行命令所用参数的集合</param>
  /// <returns>包含结果的读取器</returns>
  public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   //创建一个MySqlCommand对象
   MySqlCommand cmd = new MySqlCommand();
   //创建一个MySqlConnection对象
   MySqlConnection conn = new MySqlConnection(connectionString);
   //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
   //因此commandBehaviour.CloseConnection 就不会执行
   try
   {
    //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
    //调用 MySqlCommand 的 ExecuteReader 方法
    MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    //清除参数
    cmd.Parameters.Clear();
    return reader;
   }
   catch
   {
    //关闭连接,抛出异常
    conn.Close();
    throw;
   }
  }
  /// <summary>
  /// 返回DataSet
  /// </summary>
  /// <param name="connectionString">一个有效的连接字符串</param>
  /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  /// <param name="commandParameters">执行命令所用参数的集合</param>
  /// <returns></returns>
  public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   //创建一个MySqlCommand对象
   MySqlCommand cmd = new MySqlCommand();
   //创建一个MySqlConnection对象
   MySqlConnection conn = new MySqlConnection(connectionString);
   //在这里我们用一个try/catch结构执行sql文本命令/存储过程,
   //因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
   try
   {
    //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
    //调用 MySqlCommand 的 ExecuteReader 方法
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    adapter.SelectCommand = cmd;
    DataSet ds = new DataSet();
    adapter.Fill(ds);
    //清除参数
    cmd.Parameters.Clear();
    conn.Close();
    return ds;
   }
   catch (Exception e)
   {
    throw e;
   }
  }
  /// <summary>
  /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
  /// </summary>
  /// <remarks>
  ///例如:
  /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  ///<param name="connectionString">一个有效的连接字符串</param>
  /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  /// <param name="commandParameters">执行命令所用参数的集合</param>
  /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
  public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   MySqlCommand cmd = new MySqlCommand();
   using (MySqlConnection connection = new MySqlConnection(connectionString))
   {
    PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
    object val = cmd.ExecuteScalar();
    cmd.Parameters.Clear();
    return val;
   }
  }
  /// <summary>
  /// 用指定的数据库连接执行一个命令并返回一个数据集的第一列
  /// </summary>
  /// <remarks>
  /// 例如:
  /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  /// <param name="connection">一个存在的数据库连接</param>
  /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  /// <param name="commandParameters">执行命令所用参数的集合</param>
  /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
  public static object ExecuteScalar(MySqlConnection connection, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   MySqlCommand cmd = new MySqlCommand();
   PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
   object val = cmd.ExecuteScalar();
   cmd.Parameters.Clear();
   return val;
  }
  /// <summary>
  /// 准备执行一个命令
  /// </summary>
  /// <param name="cmd">sql命令</param>
  /// <param name="conn">OleDb连接</param>
  /// <param name="trans">OleDb事务</param>
  /// <param name="cmdType">命令类型例如 存储过程或者文本</param>
  /// <param name="cmdText">命令文本,例如:Select * from Products</param>
  /// <param name="cmdParms">执行命令的参数</param>
  private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
  {
   if (conn.State != ConnectionState.Open)
    conn.Open();
   cmd.Connection = conn;
   cmd.CommandText = cmdText;
   if (trans != null)
    cmd.Transaction = trans;
   cmd.CommandType = cmdType;
   if (cmdParms != null)
   {
    foreach (MySqlParameter parm in cmdParms)
     cmd.Parameters.Add(parm);
   }
  }
 }
}
登录后复制

希望本文所述对大家的C#程序设计有所帮助。

更多C#实现操作MySql数据层类MysqlHelper实例相关文章请关注PHP中文网!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号