亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C# 學習整理——SQLHelper

2019-11-14 10:55:42
字體:
來源:轉載
供稿:網友

C# 學習整理——SQLHelper 編輯整理中….

csharpusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Collections;using System.Data.SqlClient;/// <summary>/// 數據庫的通用訪問代碼/// 此類為抽象類,不允許實例化,在應用時直接調用即可/// </summary>public abstract class SqlHelper{ //獲取數據庫連接字符串,其屬于靜態變量且只讀,項目中所有文檔可以直接使用,但不能修改 public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString; // 哈希表用來存儲緩存的參數信息,哈希表可以存儲任意類型的參數。 PRivate static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); /// <summary> ///執行一個不需要返回值的SqlCommand命令,通過指定專用的連接字符串。 /// 使用參數數組形式提供參數列表 /// </summary> /// <remarks> /// 使用示例: /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="connectionString">一個有效的數據庫連接字符串</param> /// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)</param> /// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param> /// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表</param> /// <returns>返回一個數值表示此SqlCommand命令執行后影響的行數</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方法將參數逐個加入到SqlCommand的參數集合中 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); //清空SqlCommand中的參數列表 cmd.Parameters.Clear(); return val; } } /// <summary> ///執行一條不返回結果的SqlCommand,通過一個已經存在的數據庫連接 /// 使用參數數組提供參數 /// </summary> /// <remarks> /// 使用示例: /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="conn">一個現有的數據庫連接</param> /// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)</param> /// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param> /// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表</param> /// <returns>返回一個數值表示此SqlCommand命令執行后影響的行數</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> /// 執行一條不返回結果的SqlCommand,通過一個已經存在的數據庫事物處理 /// 使用參數數組提供參數 /// </summary> /// <remarks> /// 使用示例: /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="trans">一個存在的 sql 事物處理</param> /// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)</param> /// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param> /// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表</param> /// <returns>返回一個數值表示此SqlCommand命令執行后影響的行數</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> /// 執行一條返回結果集的SqlCommand命令,通過專用的連接字符串。 /// 使用參數數組提供參數 /// </summary> /// <remarks> /// 使用示例: /// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="connectionString">一個有效的數據庫連接字符串</param> /// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)</param> /// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param> /// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表</param> /// <returns>返回一個包含結果的SqlDataReader</returns> public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); // 在這里使用try/catch處理是因為如果方法出現異常,則SqlDataReader就不存在, //CommandBehavior.CloseConnection的語句就不會執行,觸發的異常由catch捕獲。 //關閉數據庫連接,并通過throw再次引發捕捉到的異常。 try { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw; } } /// <summary> /// 執行一條返回第一條記錄第一列的SqlCommand命令,通過專用的連接字符串。 /// 使用參數數組提供參數 /// </summary> /// <remarks> /// 使用示例: /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="connectionString">一個有效的數據庫連接字符串</param> /// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)</param> /// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param> /// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表</param> /// <returns>返回一個object類型的數據,可以通過 Convert.To{Type}方法轉換類型</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> /// 執行一條返回第一條記錄第一列的SqlCommand命令,通過已經存在的數據庫連接。 /// 使用參數數組提供參數 /// </summary> /// <remarks> /// 使用示例: /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="conn">一個已經存在的數據庫連接</param> /// <param name="commandType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)</param> /// <param name="commandText">存儲過程的名字或者 T-SQL 語句</param> /// <param name="commandParameters">以數組形式提供SqlCommand命令中用到的參數列表</param> /// <returns>返回一個object類型的數據,可以通過 Convert.To{Type}方法轉換類型</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> /// 緩存參數數組 /// </summary> /// <param name="cacheKey">參數緩存的鍵值</param> /// <param name="cmdParms">被緩存的參數列表</param> public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters) { parmCache[cacheKey] = commandParameters; } /// <summary> /// 獲取被緩存的參數 /// </summary> /// <param name="cacheKey">用于查找參數的KEY值</param> /// <returns>返回緩存的參數數組</returns> public static SqlParameter[] GetCachedParameters(string cacheKey) { SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey]; if (cachedParms == null) return null; //新建一個參數的克隆列表 SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length]; //通過循環為克隆參數列表賦值 for (int i = 0, j = cachedParms.Length; i < j; i++) //使用clone方法復制參數列表中的參數 clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone(); return clonedParms; } /// <summary> /// 為執行命令準備參數 /// </summary> /// <param name="cmd">SqlCommand 命令</param> /// <param name="conn">已經存在的數據庫連接</param> /// <param name="trans">數據庫事物處理</param> /// <param name="cmdType">SqlCommand命令類型 (存儲過程, T-SQL語句, 等等。)</param> /// <param name="cmdText">Command text,T-SQL語句 例如 Select * from Products</param> /// <param name="cmdParms">返回帶參數的命令</param> private 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); } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲伊人久久大香线蕉av| 国产日韩亚洲欧美| 久久精品国产v日韩v亚洲| 日韩欧美在线一区| 亚洲黄色av网站| 日韩在线欧美在线国产在线| 欧美日韩亚洲精品内裤| 亚洲男女自偷自拍图片另类| 国产区精品视频| 欧美日韩亚洲天堂| 亚洲国产精品人久久电影| 中文字幕日韩在线观看| 精品高清一区二区三区| 国产一区二区精品丝袜| 日韩免费高清在线观看| 在线看福利67194| 日本高清+成人网在线观看| 最近2019年好看中文字幕视频| 亚洲综合小说区| 日韩在线观看高清| 欧美美女操人视频| 91热福利电影| 蜜臀久久99精品久久久久久宅男| 精品国内亚洲在观看18黄| 亚洲视频欧洲视频| 久久久精品在线观看| 成人字幕网zmw| 久久久久久久久久久免费| 欧美日韩国产专区| 日韩av不卡电影| 日韩av电影中文字幕| 国产精品盗摄久久久| 色婷婷综合久久久久中文字幕1| 韩国国内大量揄拍精品视频| 日韩在线免费视频| 91在线观看免费网站| 欧美在线www| 亚洲电影免费观看高清完整版在线观看| 亚洲网址你懂得| 久久69精品久久久久久久电影好| 亚洲精品综合精品自拍| 欧美激情一区二区三级高清视频| 韩国欧美亚洲国产| 亚洲视频axxx| 久久久精品国产网站| 亚洲欧美在线免费| 91理论片午午论夜理片久久| 国模吧一区二区三区| 久久久久久久影视| 国产美女主播一区| 国产精品午夜国产小视频| 久久久精品中文字幕| 亚洲深夜福利网站| …久久精品99久久香蕉国产| 欧美激情a∨在线视频播放| 欧美激情国产高清| 亚洲色图国产精品| 欧美美女18p| 亚洲自拍偷拍色片视频| 欧美在线影院在线视频| 欧洲永久精品大片ww免费漫画| 午夜精品一区二区三区av| 懂色av影视一区二区三区| 成人黄色网免费| 久久久久这里只有精品| 色悠悠久久久久| 欧美激情一区二区三区在线视频观看| 国产精品久久婷婷六月丁香| 国产精品精品视频| 欧美另类极品videosbest最新版本| 国产精品久久久久9999| 久久综合网hezyo| 国产精品久久久999| 亚洲精品ady| 亚洲老司机av| 国产精品久久久久免费a∨大胸| 国产综合在线观看视频| 国产精品综合久久久| 福利一区福利二区微拍刺激| 最近2019免费中文字幕视频三| 国产在线拍揄自揄视频不卡99| 国产欧美在线视频| 欧美成人合集magnet| 精品动漫一区二区三区| 性欧美xxxx视频在线观看| 日韩有码在线观看| 亚洲精品日韩久久久| 一区二区三区视频观看| 国产小视频91| 欧美日韩一区二区三区在线免费观看| 精品国产91久久久久久| 久久亚洲国产精品| 日本不卡高字幕在线2019| 日韩精品中文字幕在线播放| 久久中文久久字幕| 国产精品7m视频| 亚洲精品一区中文字幕乱码| 成人福利在线观看| 亚洲精品av在线播放| 中文日韩电影网站| 国产成人久久久| 51ⅴ精品国产91久久久久久| 国产精品视频精品| 51久久精品夜色国产麻豆| 亚洲精品成人久久电影| 精品久久久国产精品999| 欧美成人午夜剧场免费观看| 69av成年福利视频| 欧美xxxwww| 亚洲理论在线a中文字幕| 亚洲一区二区三| 黑人巨大精品欧美一区二区三区| 久久精品福利视频| 国产精品白丝av嫩草影院| 欧美电影《睫毛膏》| 欧美成人精品一区| 丝袜美腿亚洲一区二区| 亚洲天堂免费在线| 日韩最新av在线| 亚洲欧美日韩精品久久亚洲区| 欧美极品第一页| 国产丝袜精品第一页| 欧美日韩国产限制| 有码中文亚洲精品| 国产精品成人观看视频国产奇米| 亚洲欧美日韩在线一区| 国产一区二区日韩| 97视频com| 成人免费黄色网| 中文字幕一区二区精品| 国产成人鲁鲁免费视频a| 黑人精品xxx一区一二区| 国内精品久久久久久影视8| 黑人与娇小精品av专区| 欧美激情中文字幕乱码免费| 精品国偷自产在线视频99| 久久久久久久久爱| 97成人在线视频| 日韩高清中文字幕| 亚洲a∨日韩av高清在线观看| 日韩在线观看电影| 国产精品av在线播放| 最近中文字幕mv在线一区二区三区四区| 亚洲欧美国产一区二区三区| 久国内精品在线| 欧美理论在线观看| 日韩在线资源网| 日韩av在线资源| 黑人巨大精品欧美一区二区免费| 深夜精品寂寞黄网站在线观看| 亚洲第一级黄色片| 亚洲性无码av在线| 国产精品视频色| 日韩最新免费不卡| 日本一区二区三区四区视频| 海角国产乱辈乱精品视频| 国产精品高清免费在线观看| 欧美日韩ab片| 亚洲娇小xxxx欧美娇小| 欧美亚洲一区在线| 国产91精品久久久久久久| www.日韩系列| 亚洲淫片在线视频| 亚洲最新视频在线|