搜索
首页后端开发C#.Net教程C#实现操作MySql数据层类MysqlHelper实例

本文实例讲述了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中文网!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
C语言中NULL的替代方案有哪些C语言中NULL的替代方案有哪些Mar 03, 2025 pm 05:37 PM

本文探讨了C中的无指针启用的挑战。它认为问题本身不是零,而是滥用。 本文详细介绍了预防退出的最佳实践,包括提出前检查,指针pitiberi

c语言编译器哪个好?c语言编译器哪个好?Mar 03, 2025 pm 05:39 PM

本文指导初学者选择C编译器。 它认为,海湾合作委员会由于其易用性,广泛的可用性和广泛的资源,最适合初学者。 但是,它也比较了海湾室,Clang,MSVC和TCC,突出了它们的差异

c语言编译器怎么加下一格c语言编译器怎么加下一格Mar 03, 2025 pm 05:44 PM

本文解释了如何使用printf中的\ n逃脱序列在C中创建新线字符并列出函数。 它详细介绍了功能并提供了代码示例,以说明其用于输出中的线路断裂。

C语言中NULL在现代编程中还重要吗C语言中NULL在现代编程中还重要吗Mar 03, 2025 pm 05:35 PM

本文强调了NULL在现代C编程中的持续重要性。 尽管取得了进步,但NULL对于明确的指针管理仍然至关重要,从而通过标记没有有效的内存地址来防止细分故障。 最好的prac

c语言编译器网页版有哪些?c语言编译器网页版有哪些?Mar 03, 2025 pm 05:42 PM

本文回顾了初学者的在线C编译器,重点是易用性和调试功能。 在线GDB和REPL。 其他选项,例如Programiz和Compil

c语言在线编程网站 c语言编译器官方网站汇总c语言在线编程网站 c语言编译器官方网站汇总Mar 03, 2025 pm 05:41 PM

本文比较在线C编程平台,突出了诸如调试工具,IDE功能,标准合规性和内存/执行限制等功能的差异。 它认为“最佳”平台取决于用户需求

c语言编译器复制代码方法c语言编译器复制代码方法Mar 03, 2025 pm 05:43 PM

本文讨论了C IDE中的有效代码复制。 它强调,复制是IDE功能,而不是编译器功能,并且详细提高了效率的策略,包括使用IDE选择工具,代码折叠,搜索/替换,Templa

c语言编译器不弹出输出窗口怎么解决c语言编译器不弹出输出窗口怎么解决Mar 03, 2025 pm 05:40 PM

本文在C程序编译中对缺少输出窗口进行故障排除。 它研究了诸如无法运行可执行文件,程序错误,错误编译器设置,背景过程和快速程序终止之类的原因。解决方案涉及ch

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)