日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SqlHelper改造版本

發(fā)布時(shí)間:2023/11/30 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SqlHelper改造版本 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections;


??? /// <summary>
??? /// SqlHelper類(lèi)是專(zhuān)門(mén)提供給廣大用戶(hù)用于高性能、可升級(jí)和最佳練習(xí)的sql數(shù)據(jù)操作
??? /// </summary>
??? public abstract class SqlHelper
??? {

?
??????? // 用于緩存參數(shù)的HASH表
??????? // public static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
??????? /// <summary>
??????? /// 返回一個(gè)數(shù)據(jù)表(Fill)1
??????? /// </summary>
??????? /// <param name="connectionString">連接字符串</param>
??????? /// <param name="cmdType">類(lèi)型</param>
??????? /// <param name="cmdText">命令</param>
??????? /// <param name="TableName">DataTable表名</param>
??????? /// <returns>DataTable</returns>
??????? public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText,string TableName)
??????? {

??????????? SqlCommand cmd = new SqlCommand();
??????????? SqlDataAdapter dpt = new SqlDataAdapter();
??????????? using (SqlConnection Conn = new SqlConnection(connectionString))
??????????? {
??????????????? cmd.CommandType = cmdType;
??????????????? cmd.CommandText = cmdText;
??????????????? dpt.SelectCommand = cmd;
??????????????? DataSet DsResoult = new DataSet();
??????????????? dpt.Fill(DsResoult, TableName);
??????????????? return DsResoult.Tables[TableName];
??????????? }
??????? }
??????? /// <summary>
??????? /// 返回一個(gè)數(shù)據(jù)表(Fill)2
??????? /// </summary>
??????? /// <param name="connectionString">連接字符串</param>
??????? /// <param name="cmdType">類(lèi)型</param>
??????? /// <param name="cmdText">命令</param>
??????? /// <returns>DataTable</returns>
??????? public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText)
??????? {

??????????? SqlCommand cmd = new SqlCommand();
??????????? SqlDataAdapter dpt = new SqlDataAdapter();
??????????? using (SqlConnection Conn = new SqlConnection(connectionString))
??????????? {
??????????????? cmd.CommandType = cmdType;
??????????????? cmd.CommandText = cmdText;
??????????????? dpt.SelectCommand = cmd;
??????????????? DataSet DsResoult = new DataSet();
??????????????? dpt.Fill(DsResoult, "TempTable");
??????????????? return DsResoult.Tables["TempTable"];
??????????? }
??????? }
?????????? /// <summary>
??????? /// 返回一個(gè)數(shù)據(jù)表(Fill)3
??????? /// </summary>
??????? /// <param name="connectionString">連接字符串</param>
??????? /// <param name="cmdType">類(lèi)型</param>
??????? /// <param name="cmdText">命令</param>
??????? /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
??????? /// <returns>DataTable</returns>
??????? public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
??????? {

??????????? SqlCommand cmd = new SqlCommand();
??????????? SqlDataAdapter dpt = new SqlDataAdapter();
??????????? using (SqlConnection Conn = new SqlConnection(connectionString))
??????????? {
??????????????? PrepareCommand(cmd, Conn, null, cmdType, cmdText, commandParameters);
??????????????? cmd.CommandType = cmdType;
??????????????? cmd.CommandText = cmdText;
??????????????? dpt.SelectCommand = cmd;
??????????????? DataSet DsResoult = new DataSet();
??????????????? dpt.Fill(DsResoult, "TableName");
??????????????? cmd.Parameters.Clear();
??????????????? return DsResoult.Tables["TableName"];
??????????? }
??????? }
??????? /// <summary>
??????? /// 返回一個(gè)數(shù)據(jù)表(Fill)4
??????? /// </summary>
??????? /// <param name="connectionString">連接字符串</param>
??????? /// <param name="cmdType">類(lèi)型</param>
??????? /// <param name="cmdText">命令</param>
??????? /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
??????? /// <returns>DataTable</returns>
??????? public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText, string TableName, params SqlParameter[] commandParameters)
??????? {

??????????? SqlCommand cmd = new SqlCommand();
??????????? SqlDataAdapter dpt = new SqlDataAdapter();
??????????? using (SqlConnection Conn = new SqlConnection(connectionString))
??????????? {
??????????????? PrepareCommand(cmd, Conn, null, cmdType, cmdText, commandParameters);
??????????????? cmd.CommandType = cmdType;
??????????????? cmd.CommandText = cmdText;
??????????????? dpt.SelectCommand = cmd;
??????????????? DataSet DsResoult = new DataSet();
??????????????? dpt.Fill(DsResoult, TableName);
??????????????? cmd.Parameters.Clear();
??????????????? return DsResoult.Tables[TableName];
??????????? }
??????? }
??????? /// <summary>
??????? ///? 給定連接的數(shù)據(jù)庫(kù)用假設(shè)參數(shù)執(zhí)行一個(gè)sql命令(不返回?cái)?shù)據(jù)集)
??????? /// </summary>
??????? /// <param name="connectionString">一個(gè)有效的連接字符串</param>
??????? /// <param name="commandType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
??????? /// <param name="commandText">存儲(chǔ)過(guò)程名稱(chēng)或者sql命令語(yǔ)句</param>
??????? /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
??????? /// <returns>執(zhí)行命令所影響的行數(shù)</returns>
??????? public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
??????? {

??????????? SqlCommand cmd = new SqlCommand();

??????????? using (SqlConnection conn = new SqlConnection(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="conn">一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接</param>
??????? /// <param name="commandType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
??????? /// <param name="commandText">存儲(chǔ)過(guò)程名稱(chēng)或者sql命令語(yǔ)句</param>
??????? /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
??????? /// <returns>執(zhí)行命令所影響的行數(shù)</returns>
??????? public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
??????? {

??????????? SqlCommand cmd = new SqlCommand();
???
??????????? 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 SqlParameter("@prodid", 24));
??????? /// </remarks>
??????? /// <param name="trans">一個(gè)現(xiàn)有的事務(wù)</param>
??????? /// <param name="commandType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
??????? /// <param name="commandText">存儲(chǔ)過(guò)程名稱(chēng)或者sql命令語(yǔ)句</param>
??????? /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
??????? /// <returns>執(zhí)行命令所影響的行數(shù)</returns>
??????? public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
??????? {
??????????? SqlCommand cmd = new SqlCommand();
??????????? 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>
??????? /// 舉例:?
??????? ///? SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
??????? /// </remarks>
??????? /// <param name="connectionString">一個(gè)有效的連接字符串</param>
??????? /// <param name="commandType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
??????? /// <param name="commandText">存儲(chǔ)過(guò)程名稱(chēng)或者sql命令語(yǔ)句</param>
??????? /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
??????? /// <returns>包含結(jié)果的讀取器</returns>
??????? public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
??????? {
??????????? //創(chuàng)建一個(gè)SqlCommand對(duì)象
??????????? SqlCommand cmd = new SqlCommand();
??????????? //創(chuàng)建一個(gè)SqlConnection對(duì)象
??????????? SqlConnection conn = new SqlConnection(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ì) SqlCommand 對(duì)象設(shè)置參數(shù)
??????????????? PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
??????????????? //調(diào)用 SqlCommand? 的 ExecuteReader 方法
??????????????? SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
??????????????? //清除參數(shù)
??????????????? cmd.Parameters.Clear();
??????????????? return reader;
??????????? }
??????????? catch
??????????? {
??????????????? //關(guān)閉連接,拋出異常
??????????????? conn.Close();
??????????????? throw;
??????????? }
??????? }

??????? /// <summary>
??????? /// 用指定的數(shù)據(jù)庫(kù)連接字符串執(zhí)行一個(gè)命令并返回一個(gè)數(shù)據(jù)集的第一列
??????? /// </summary>
??????? /// <remarks>
??????? ///例如:?
??????? ///? Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
??????? /// </remarks>
??????? ///<param name="connectionString">一個(gè)有效的連接字符串</param>
??????? /// <param name="commandType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
??????? /// <param name="commandText">存儲(chǔ)過(guò)程名稱(chēng)或者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 SqlParameter[] commandParameters)
??????? {
??????????? SqlCommand cmd = new SqlCommand();

??????????? using (SqlConnection connection = new SqlConnection(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 SqlParameter("@prodid", 24));
??????? /// </remarks>
??????? /// <param name="conn">一個(gè)存在的數(shù)據(jù)庫(kù)連接</param>
??????? /// <param name="commandType">命令類(lèi)型(存儲(chǔ)過(guò)程, 文本, 等等)</param>
??????? /// <param name="commandText">存儲(chǔ)過(guò)程名稱(chēng)或者sql命令語(yǔ)句</param>
??????? /// <param name="commandParameters">執(zhí)行命令所用參數(shù)的集合</param>
??????? /// <returns>用 Convert.To{Type}把類(lèi)型轉(zhuǎn)換為想要的 </returns>
??????? public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
??????? {

??????????? SqlCommand cmd = new SqlCommand();

??????????? 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">Sql連接</param>
??????? /// <param name="trans">Sql事務(wù)</param>
??????? /// <param name="cmdType">命令類(lèi)型例如 存儲(chǔ)過(guò)程或者文本</param>
??????? /// <param name="cmdText">命令文本,例如:Select * from Products</param>
??????? /// <param name="cmdParms">執(zhí)行命令的參數(shù)</param>
??????? public static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] 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 (SqlParameter parm in cmdParms)
??????????????????? cmd.Parameters.Add(parm);
??????????? }
??????? }
??? }

總結(jié)

以上是生活随笔為你收集整理的SqlHelper改造版本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。