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

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

C# 學習整理——SQLHelper

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

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); } }}
上一篇:枚舉

下一篇:python環境安裝

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品v片在线观看不卡| 欧美裸身视频免费观看| 日韩av成人在线| 欧美劲爆第一页| 懂色av一区二区三区| 欧美成人剧情片在线观看| 国内精品久久久久| 亚洲自拍偷拍一区| 97国产真实伦对白精彩视频8| 国产91精品最新在线播放| 97在线免费观看视频| 精品国内自产拍在线观看| 精品久久久久久久久久久久| 久久中文字幕在线| 国产精品久久久久久久天堂| 日本亚洲欧洲色| 欧美日韩免费看| 亚洲欧美激情视频| 日韩激情av在线播放| 欧美日韩在线视频一区二区| 国产有码在线一区二区视频| 精品一区二区三区四区在线| 久久九九全国免费精品观看| 亚洲网站在线观看| 欧美激情国产精品| 欧美激情精品久久久久| 久久亚洲精品视频| 深夜福利一区二区| 久久精品国产清自在天天线| 精品国产一区二区三区在线观看| 久久国产精品偷| 欧美福利视频在线观看| 色多多国产成人永久免费网站| 欧美午夜视频一区二区| 97香蕉久久超级碰碰高清版| 亚洲人成在线观| 国产亚洲视频在线观看| 欧美一区二区三区……| 91av视频在线播放| 日韩中文字幕免费看| 成人网在线免费观看| 国产精品永久免费在线| 中文字幕欧美在线| 欧美日韩中文字幕在线| 国产亚洲aⅴaaaaaa毛片| 国产做受高潮69| 成人国产在线视频| 亚洲网址你懂得| 91精品久久久久久久久中文字幕| 欧美精品18videosex性欧美| 亚洲精品视频二区| 国内精品在线一区| 韩国三级日本三级少妇99| 国产成人小视频在线观看| 久久精品国产亚洲精品2020| 91久久在线视频| 日韩av电影手机在线| 欧美日韩国产精品一区二区不卡中文| 久久精视频免费在线久久完整在线看| 亚洲国产精品va在线看黑人| 97人人做人人爱| 久久精品国产精品| 亚洲精品视频中文字幕| 亚洲天堂av在线免费观看| 日韩精品久久久久久久玫瑰园| 97精品国产aⅴ7777| 日韩美女中文字幕| 亚洲激情 国产| 久久人人爽人人爽爽久久| 夜夜嗨av色综合久久久综合网| 国产精品久久久久一区二区| 欧洲永久精品大片ww免费漫画| 亚洲午夜精品久久久久久性色| 国产精品成熟老女人| 午夜精品蜜臀一区二区三区免费| 麻豆成人在线看| 国产精品久久久久久久美男| 国产精品久久久久久搜索| 欧美视频在线看| 国产成人在线精品| 亚洲影院色无极综合| 国产精品自在线| 欧美日韩精品在线观看| 韩国欧美亚洲国产| 欧美亚洲成人精品| 日韩精品在线观看一区二区| 136fldh精品导航福利| 色悠悠久久久久| 91欧美精品成人综合在线观看| 一区二区三区在线播放欧美| 全色精品综合影院| 欧美精品videosex极品1| 国产不卡一区二区在线播放| 中文字幕亚洲字幕| 国产精品电影久久久久电影网| 成人精品在线视频| 亚洲国产精品va在线看黑人| 色综合91久久精品中文字幕| 亚洲精品网址在线观看| 精品成人久久av| 国产精品av在线| 日韩麻豆第一页| 亚洲免费高清视频| 国产亚洲精品美女久久久久| 一区三区二区视频| 国产999精品视频| 亚洲伊人一本大道中文字幕| 久久久久日韩精品久久久男男| 久久中文字幕在线视频| 日韩视频免费大全中文字幕| 欧美国产亚洲精品久久久8v| 琪琪亚洲精品午夜在线| 日韩大片在线观看视频| 久久影院模特热| 在线一区二区日韩| 欧美伊久线香蕉线新在线| 国产日产欧美a一级在线| 色综合久久精品亚洲国产| 日韩免费高清在线观看| 国产成人高清激情视频在线观看| 国产精品第七十二页| 91精品国产乱码久久久久久蜜臀| 国模精品视频一区二区三区| 国产不卡一区二区在线播放| 久久久人成影片一区二区三区观看| 亚洲日韩第一页| 久久久久久中文| 欧美人成在线视频| 国产欧美日韩精品在线观看| 中日韩美女免费视频网站在线观看| 国产精品爱啪在线线免费观看| 91在线观看免费| 96精品久久久久中文字幕| 66m—66摸成人免费视频| 日本午夜在线亚洲.国产| 亚洲精品国产精品乱码不99按摩| 国产精品久久久久久av福利软件| 一本色道久久88亚洲综合88| 国产精品免费一区| 亚洲欧美一区二区精品久久久| 日本午夜在线亚洲.国产| 精品国产美女在线| 久久不射热爱视频精品| 亚洲free性xxxx护士白浆| 亚洲国产一区二区三区在线观看| 国产精品日韩专区| 亚洲精品电影在线| 97视频在线观看播放| 97成人精品视频在线观看| 久久99精品视频一区97| 亚洲一区中文字幕在线观看| 亚洲人精选亚洲人成在线| 国产999精品视频| 亚洲精品福利视频| 国产精品毛片a∨一区二区三区|国| 中文字幕日韩综合av| 国产精品久久97| 亚洲欧美精品一区二区| 亚洲电影天堂av| 日韩国产一区三区| 7777kkkk成人观看| 91av成人在线| 午夜精品久久久久久久久久久久久| 欧美大尺度激情区在线播放|