欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類(lèi)MysqlHelper實(shí)例

 更新時(shí)間:2015年04月25日 16:05:20   作者:gogo  
這篇文章主要介紹了C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類(lèi)MysqlHelper,實(shí)例分析了C#操作MySQL的常用技巧,并將其封裝入一個(gè)類(lèi)中以方便調(diào)用,需要的朋友可以參考下

本文實(shí)例講述了C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類(lèi)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
 {
  //數(shù)據(jù)庫(kù)連接字符串
  public static string Conn = "Database='device_manage';Data Source='localhost';User Id='root';Password='123456';charset='utf8';pooling=true;Allow Zero Datetime=True";
  /// <summary>
  /// 給定連接的數(shù)據(jù)庫(kù)用假設(shè)參數(shù)執(zhí)行一個(gè)sql命令(不返回?cái)?shù)據(jù)集)
  /// </summary>
  /// <param name="connectionString">一個(gè)有效的連接字符串</param>
  /// <param name="cmdType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
  /// <param name="cmdText">存儲(chǔ)過(guò)程名稱或者sql命令語(yǔ)句</param>
  /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
  /// <returns>執(zhí)行命令所影響的行數(shù)</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>
  /// 用現(xiàn)有的數(shù)據(jù)庫(kù)連接執(zhí)行一個(gè)sql命令(不返回?cái)?shù)據(jù)集)
  /// </summary>
  /// <param name="connection">一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接</param>
  /// <param name="cmdType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
  /// <param name="cmdText">存儲(chǔ)過(guò)程名稱或者sql命令語(yǔ)句</param>
  /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
  /// <returns>執(zhí)行命令所影響的行數(shù)</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>
  ///使用現(xiàn)有的SQL事務(wù)執(zhí)行一個(gè)sql命令(不返回?cái)?shù)據(jù)集)
  /// </summary>
  /// <remarks>
  ///舉例:
  /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  /// <param name="trans">一個(gè)現(xiàn)有的事務(wù)</param>
  /// <param name="cmdType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
  /// <param name="cmdText">存儲(chǔ)過(guò)程名稱或者sql命令語(yǔ)句</param>
  /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
  /// <returns>執(zhí)行命令所影響的行數(shù)</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>
  /// 用執(zhí)行的數(shù)據(jù)庫(kù)連接執(zhí)行一個(gè)返回?cái)?shù)據(jù)集的sql命令
  /// </summary>
  /// <remarks>
  /// 舉例:
  /// MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  /// <param name="connectionString">一個(gè)有效的連接字符串</param>
  /// <param name="cmdType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
  /// <param name="cmdText">存儲(chǔ)過(guò)程名稱或者sql命令語(yǔ)句</param>
  /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
  /// <returns>包含結(jié)果的讀取器</returns>
  public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   //創(chuàng)建一個(gè)MySqlCommand對(duì)象
   MySqlCommand cmd = new MySqlCommand();
   //創(chuàng)建一個(gè)MySqlConnection對(duì)象
   MySqlConnection conn = new MySqlConnection(connectionString);
   //在這里我們用一個(gè)try/catch結(jié)構(gòu)執(zhí)行sql文本命令/存儲(chǔ)過(guò)程,因?yàn)槿绻@個(gè)方法產(chǎn)生一個(gè)異常我們要關(guān)閉連接,因?yàn)闆](méi)有讀取器存在,
   //因此commandBehaviour.CloseConnection 就不會(huì)執(zhí)行
   try
   {
    //調(diào)用 PrepareCommand 方法,對(duì) MySqlCommand 對(duì)象設(shè)置參數(shù)
    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
    //調(diào)用 MySqlCommand 的 ExecuteReader 方法
    MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    //清除參數(shù)
    cmd.Parameters.Clear();
    return reader;
   }
   catch
   {
    //關(guān)閉連接,拋出異常
    conn.Close();
    throw;
   }
  }
  /// <summary>
  /// 返回DataSet
  /// </summary>
  /// <param name="connectionString">一個(gè)有效的連接字符串</param>
  /// <param name="cmdType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
  /// <param name="cmdText">存儲(chǔ)過(guò)程名稱或者sql命令語(yǔ)句</param>
  /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
  /// <returns></returns>
  public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  {
   //創(chuàng)建一個(gè)MySqlCommand對(duì)象
   MySqlCommand cmd = new MySqlCommand();
   //創(chuàng)建一個(gè)MySqlConnection對(duì)象
   MySqlConnection conn = new MySqlConnection(connectionString);
   //在這里我們用一個(gè)try/catch結(jié)構(gòu)執(zhí)行sql文本命令/存儲(chǔ)過(guò)程,
   //因?yàn)槿绻@個(gè)方法產(chǎn)生一個(gè)異常我們要關(guān)閉連接,因?yàn)闆](méi)有讀取器存在,
   try
   {
    //調(diào)用 PrepareCommand 方法,對(duì) MySqlCommand 對(duì)象設(shè)置參數(shù)
    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
    //調(diào)用 MySqlCommand 的 ExecuteReader 方法
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    adapter.SelectCommand = cmd;
    DataSet ds = new DataSet();
    adapter.Fill(ds);
    //清除參數(shù)
    cmd.Parameters.Clear();
    conn.Close();
    return ds;
   }
   catch (Exception e)
   {
    throw e;
   }
  }
  /// <summary>
  /// 用指定的數(shù)據(jù)庫(kù)連接字符串執(zhí)行一個(gè)命令并返回一個(gè)數(shù)據(jù)集的第一列
  /// </summary>
  /// <remarks>
  ///例如:
  /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  ///<param name="connectionString">一個(gè)有效的連接字符串</param>
  /// <param name="cmdType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
  /// <param name="cmdText">存儲(chǔ)過(guò)程名稱或者sql命令語(yǔ)句</param>
  /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
  /// <returns>用 Convert.To{Type}把類(lèi)型轉(zhuǎn)換為想要的 </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>
  /// 用指定的數(shù)據(jù)庫(kù)連接執(zhí)行一個(gè)命令并返回一個(gè)數(shù)據(jù)集的第一列
  /// </summary>
  /// <remarks>
  /// 例如:
  /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  /// </remarks>
  /// <param name="connection">一個(gè)存在的數(shù)據(jù)庫(kù)連接</param>
  /// <param name="cmdType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
  /// <param name="cmdText">存儲(chǔ)過(guò)程名稱或者sql命令語(yǔ)句</param>
  /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
  /// <returns>用 Convert.To{Type}把類(lèi)型轉(zhuǎn)換為想要的 </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>
  /// 準(zhǔn)備執(zhí)行一個(gè)命令
  /// </summary>
  /// <param name="cmd">sql命令</param>
  /// <param name="conn">OleDb連接</param>
  /// <param name="trans">OleDb事務(wù)</param>
  /// <param name="cmdType">命令類(lèi)型例如 存儲(chǔ)過(guò)程或者文本</param>
  /// <param name="cmdText">命令文本,例如:Select * from Products</param>
  /// <param name="cmdParms">執(zhí)行命令的參數(shù)</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);
   }
  }
 }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#中event內(nèi)存泄漏總結(jié)

    C#中event內(nèi)存泄漏總結(jié)

    本篇文章給大家分享了在C#中event內(nèi)存泄漏的相關(guān)知識(shí)點(diǎn)以及代碼分享,有興趣的朋友參考學(xué)習(xí)下。
    2018-03-03
  • WPF自定義控件和樣式之自定義按鈕(Button)

    WPF自定義控件和樣式之自定義按鈕(Button)

    接觸WPF也有兩個(gè)多月了,有了一定的理論基礎(chǔ)和項(xiàng)目經(jīng)驗(yàn),現(xiàn)在打算寫(xiě)一個(gè)系列,做出來(lái)一個(gè)WPF的控件庫(kù)。下面這篇文章主要給大家介紹了關(guān)于WPF自定義控件和樣式之自定義按鈕(Button)的相關(guān)資料,需要的朋友可以參考下。
    2018-04-04
  • C#中判斷一個(gè)集合是否是另一個(gè)集合的子集的簡(jiǎn)單方法

    C#中判斷一個(gè)集合是否是另一個(gè)集合的子集的簡(jiǎn)單方法

    本文介紹利用C#中內(nèi)置的系統(tǒng)函數(shù)判斷一個(gè)集合是否是一個(gè)集合的子集的方法,此方法代碼量極少,分享給大家。
    2016-04-04
  • [C#].NET中幾種Timer的使用實(shí)例

    [C#].NET中幾種Timer的使用實(shí)例

    本篇文章主要介紹了.NET中幾種Timer的使用,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • 詳解C#中普通緩存的使用

    詳解C#中普通緩存的使用

    緩存的概念及優(yōu)缺點(diǎn)在這里就不多做介紹,當(dāng)然緩存包含多種有普通緩存、客戶端緩存、DNS緩存、反向代理緩存以及分布式緩存等等。今天主要聊一聊C#通過(guò)編碼來(lái)實(shí)現(xiàn)普通的緩存、話不多說(shuō)直接上代碼。
    2021-05-05
  • C#圖像線性變換的方法

    C#圖像線性變換的方法

    這篇文章主要介紹了C#圖像線性變換的方法,涉及C#操作圖像線性變換的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • vs代碼段快捷鍵設(shè)置(圖文)

    vs代碼段快捷鍵設(shè)置(圖文)

    學(xué)習(xí)代碼快捷鍵是程序員必學(xué)知識(shí)點(diǎn),會(huì)使用代碼快捷在程序開(kāi)發(fā)過(guò)程中會(huì)提高開(kāi)發(fā)效率,下面小編給大家整理些有關(guān)vs代碼段快捷鍵設(shè)置的技巧,需要的朋友可以參考下
    2015-08-08
  • C#中分部類(lèi)和分部方法的應(yīng)用

    C#中分部類(lèi)和分部方法的應(yīng)用

    本篇文章介紹了,C#中分部類(lèi)和分部方法的應(yīng)用。需要的朋友參考下
    2013-04-04
  • C#實(shí)現(xiàn)手機(jī)拍照并且保存水印照片

    C#實(shí)現(xiàn)手機(jī)拍照并且保存水印照片

    這篇文章主要介紹了C#實(shí)現(xiàn)手機(jī)拍照并且保存水印照片的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • 詳解Unity入門(mén)之GameObject

    詳解Unity入門(mén)之GameObject

    Unity是一個(gè)Component-Based的引擎,所有物體都是GameObject。本文將詳細(xì)介紹GameObject和MonoBehaviour,感興趣的同學(xué),可以參考下。
    2021-05-05

最新評(píng)論