當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]using?System; using?System.Data; using?System.Configuration; using?System.Web; using?System.Web.Secu


using?System;
using?System.Data;
using?System.Configuration;
using?System.Web;
using?System.Web.Security;
using?System.Collections;
using?System.Data.SqlClient;
?
//////?數(shù)據(jù)庫(kù)的通用訪問(wèn)代碼
///?此類為抽象類,不允許實(shí)例化,在應(yīng)用時(shí)直接調(diào)用即可
///public?abstract?class?SqlHelper
{
????//獲取數(shù)據(jù)庫(kù)連接字符串,其屬于靜態(tài)變量且只讀,項(xiàng)目中所有文檔可以直接使用,但不能修改
????public?static?readonly?string?ConnectionStringLocalTransaction?=?ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString;
?
????//?哈希表用來(lái)存儲(chǔ)緩存的參數(shù)信息,哈希表可以存儲(chǔ)任意類型的參數(shù)。
????private?static?Hashtable?parmCache?=?Hashtable.Synchronized(new?Hashtable());
?
????//////執(zhí)行一個(gè)不需要返回值的SqlCommand命令,通過(guò)指定專用的連接字符串。
????///?使用參數(shù)數(shù)組形式提供參數(shù)列表?
????/////////?使用示例:
????///??int?result?=?ExecuteNonQuery(connString,?CommandType.StoredProcedure,?"PublishOrders",?new?SqlParameter("@prodid",?24));
????//////一個(gè)有效的數(shù)據(jù)庫(kù)連接字符串///SqlCommand命令類型?(存儲(chǔ)過(guò)程,?T-SQL語(yǔ)句,?等等。)///存儲(chǔ)過(guò)程的名字或者?T-SQL?語(yǔ)句///以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表///返回一個(gè)數(shù)值表示此SqlCommand命令執(zhí)行后影響的行數(shù)public?static?int?ExecuteNonQuery(string?connectionString,?CommandType?cmdType,?string?cmdText,?params?SqlParameter[]?commandParameters)
????{
?
????????SqlCommand?cmd?=?new?SqlCommand();
?
????????using?(SqlConnection?conn?=?new?SqlConnection(connectionString))
????????{
????????????//通過(guò)PrePareCommand方法將參數(shù)逐個(gè)加入到SqlCommand的參數(shù)集合中
????????????PrepareCommand(cmd,?conn,?null,?cmdType,?cmdText,?commandParameters);
????????????int?val?=?cmd.ExecuteNonQuery();
?
????????????//清空SqlCommand中的參數(shù)列表
????????????cmd.Parameters.Clear();
????????????return?val;
????????}
????}
?????
????//////執(zhí)行一條不返回結(jié)果的SqlCommand,通過(guò)一個(gè)已經(jīng)存在的數(shù)據(jù)庫(kù)連接?
????///?使用參數(shù)數(shù)組提供參數(shù)
????/////////?使用示例:??
????///??int?result?=?ExecuteNonQuery(conn,?CommandType.StoredProcedure,?"PublishOrders",?new?SqlParameter("@prodid",?24));
????//////一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接///SqlCommand命令類型?(存儲(chǔ)過(guò)程,?T-SQL語(yǔ)句,?等等。)///存儲(chǔ)過(guò)程的名字或者?T-SQL?語(yǔ)句///以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表///返回一個(gè)數(shù)值表示此SqlCommand命令執(zhí)行后影響的行數(shù)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;
????}
?
????//////?執(zhí)行一條不返回結(jié)果的SqlCommand,通過(guò)一個(gè)已經(jīng)存在的數(shù)據(jù)庫(kù)事物處理?
????///?使用參數(shù)數(shù)組提供參數(shù)
????/////////?使用示例:?
????///??int?result?=?ExecuteNonQuery(trans,?CommandType.StoredProcedure,?"PublishOrders",?new?SqlParameter("@prodid",?24));
????//////一個(gè)存在的?sql?事物處理///SqlCommand命令類型?(存儲(chǔ)過(guò)程,?T-SQL語(yǔ)句,?等等。)///存儲(chǔ)過(guò)程的名字或者?T-SQL?語(yǔ)句///以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表///返回一個(gè)數(shù)值表示此SqlCommand命令執(zhí)行后影響的行數(shù)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;
????}
?
????//////?執(zhí)行一條返回結(jié)果集的SqlCommand命令,通過(guò)專用的連接字符串。
????///?使用參數(shù)數(shù)組提供參數(shù)
????/////////?使用示例:??
????///??SqlDataReader?r?=?ExecuteReader(connString,?CommandType.StoredProcedure,?"PublishOrders",?new?SqlParameter("@prodid",?24));
????//////一個(gè)有效的數(shù)據(jù)庫(kù)連接字符串///SqlCommand命令類型?(存儲(chǔ)過(guò)程,?T-SQL語(yǔ)句,?等等。)///存儲(chǔ)過(guò)程的名字或者?T-SQL?語(yǔ)句///以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表///返回一個(gè)包含結(jié)果的SqlDataReaderpublic?static?SqlDataReader?ExecuteReader(string?connectionString,?CommandType?cmdType,?string?cmdText,?params?SqlParameter[]?commandParameters)
????{
????????SqlCommand?cmd?=?new?SqlCommand();
????????SqlConnection?conn?=?new?SqlConnection(connectionString);
?
????????//?在這里使用try/catch處理是因?yàn)槿绻椒ǔ霈F(xiàn)異常,則SqlDataReader就不存在,
????????//CommandBehavior.CloseConnection的語(yǔ)句就不會(huì)執(zhí)行,觸發(fā)的異常由catch捕獲。
????????//關(guān)閉數(shù)據(jù)庫(kù)連接,并通過(guò)throw再次引發(fā)捕捉到的異常。
????????try
????????{
????????????PrepareCommand(cmd,?conn,?null,?cmdType,?cmdText,?commandParameters);
????????????SqlDataReader?rdr?=?cmd.ExecuteReader(CommandBehavior.CloseConnection);
????????????cmd.Parameters.Clear();
????????????return?rdr;
????????}
????????catch
????????{
????????????conn.Close();
????????????throw;
????????}
????}
?
????//////?執(zhí)行一條返回第一條記錄第一列的SqlCommand命令,通過(guò)專用的連接字符串。?
????///?使用參數(shù)數(shù)組提供參數(shù)
????/////////?使用示例:??
????///??Object?obj?=?ExecuteScalar(connString,?CommandType.StoredProcedure,?"PublishOrders",?new?SqlParameter("@prodid",?24));
????//////一個(gè)有效的數(shù)據(jù)庫(kù)連接字符串///SqlCommand命令類型?(存儲(chǔ)過(guò)程,?T-SQL語(yǔ)句,?等等。)///存儲(chǔ)過(guò)程的名字或者?T-SQL?語(yǔ)句///以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表///返回一個(gè)object類型的數(shù)據(jù),可以通過(guò)?Convert.To{Type}方法轉(zhuǎn)換類型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;
????????}
????}
?
????//////?執(zhí)行一條返回第一條記錄第一列的SqlCommand命令,通過(guò)已經(jīng)存在的數(shù)據(jù)庫(kù)連接。
????///?使用參數(shù)數(shù)組提供參數(shù)
????/////////?使用示例:?
????///??Object?obj?=?ExecuteScalar(connString,?CommandType.StoredProcedure,?"PublishOrders",?new?SqlParameter("@prodid",?24));
????//////一個(gè)已經(jīng)存在的數(shù)據(jù)庫(kù)連接///SqlCommand命令類型?(存儲(chǔ)過(guò)程,?T-SQL語(yǔ)句,?等等。)///存儲(chǔ)過(guò)程的名字或者?T-SQL?語(yǔ)句///以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表///返回一個(gè)object類型的數(shù)據(jù),可以通過(guò)?Convert.To{Type}方法轉(zhuǎn)換類型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;
????}
?
????//////?緩存參數(shù)數(shù)組
????//////參數(shù)緩存的鍵值///被緩存的參數(shù)列表public?static?void?CacheParameters(string?cacheKey,?params?SqlParameter[]?commandParameters)
????{
????????parmCache[cacheKey]?=?commandParameters;
????}
?
????//////?獲取被緩存的參數(shù)
????//////用于查找參數(shù)的KEY值///返回緩存的參數(shù)數(shù)組public?static?SqlParameter[]?GetCachedParameters(string?cacheKey)
????{
????????SqlParameter[]?cachedParms?=?(SqlParameter[])parmCache[cacheKey];
?
????????if?(cachedParms?==?null)
????????????return?null;
?
????????//新建一個(gè)參數(shù)的克隆列表
????????SqlParameter[]?clonedParms?=?new?SqlParameter[cachedParms.Length];
?
????????//通過(guò)循環(huán)為克隆參數(shù)列表賦值
????????for?(int?i?=?0,?j?=?cachedParms.Length;?i?<?j;?i++)
????????????//使用clone方法復(fù)制參數(shù)列表中的參數(shù)
????????????clonedParms[i]?=?(SqlParameter)((ICloneable)cachedParms[i]).Clone();
?
????????return?clonedParms;
????}
?
????//////?為執(zhí)行命令準(zhǔn)備參數(shù)
????//////SqlCommand?命令///已經(jīng)存在的數(shù)據(jù)庫(kù)連接///數(shù)據(jù)庫(kù)事物處理///SqlCommand命令類型?(存儲(chǔ)過(guò)程,?T-SQL語(yǔ)句,?等等。)///Command?text,T-SQL語(yǔ)句?例如?Select?*?from?Products///返回帶參數(shù)的命令private?static?void?PrepareCommand(SqlCommand?cmd,?SqlConnection?conn,?SqlTransaction?trans,?CommandType?cmdType,?string?cmdText,?SqlParameter[]?cmdParms)
????{
?
????????//判斷數(shù)據(jù)庫(kù)連接狀態(tài)
????????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);
????????}
????}
}



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉