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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SqlHelper详解(转载)

發(fā)布時間:2024/6/14 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SqlHelper详解(转载) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
SqlHelper 類實(shí)現(xiàn)詳細(xì)信息 SqlHelper 類用于通過一組靜態(tài)方法來封裝數(shù)據(jù)訪問功能。該類不能被繼承或?qū)嵗?#xff0c;因此將其聲明為包含專用構(gòu)造函數(shù)的不可繼承類。 在 SqlHelper 類中實(shí)現(xiàn)的每種方法都提供了一組一致的重載。這提供了一種很好的使用 SqlHelper 類來執(zhí)行命令的模式,同時為開發(fā)人員選擇訪問數(shù)據(jù)的方式提供了必要的靈活性。每種方法的重載都支持不同的方法參數(shù),因此開發(fā)人員可以確定傳遞連接、事務(wù)和參數(shù)信息的方式。在 SqlHelper 類中實(shí)現(xiàn)的方法包括: ExecuteNonQuery。此方法用于執(zhí)行不返回任何行或值的命令。這些命令通常用于執(zhí)行數(shù)據(jù)庫更新,但也可用于返回存儲過程的輸出參數(shù)。 ExecuteReader。此方法用于返回 SqlDataReader 對象,該對象包含由某一命令返回的結(jié)果集。 ExecuteDataset。此方法返回 DataSet 對象,該對象包含由某一命令返回的結(jié)果集。 ExecuteScalar。此方法返回一個值。該值始終是該命令返回的第一行的第一列。 ExecuteXmlReader。此方法返回 FOR XML 查詢的 XML 片段。 除了這些公共方法外,SqlHelper 類還包含一些專用函數(shù),用于管理參數(shù)和準(zhǔn)備要執(zhí)行的命令。不管客戶端調(diào)用什么樣的方法實(shí)現(xiàn),所有命令都通過 SqlCommand 對象來執(zhí)行。在 SqlCommand 對象能夠被執(zhí)行之前,所有參數(shù)都必須添加到 Parameters 集合中,并且必須正確設(shè)置 Connection、CommandType、CommandText 和 Transaction 屬性。SqlHelper 類中的專用函數(shù)主要用于提供一種一致的方式,以便向 SQL Server 數(shù)據(jù)庫發(fā)出命令,而不考慮客戶端應(yīng)用程序調(diào)用的重載方法實(shí)現(xiàn)。SqlHelper 類中的專用實(shí)用程序函數(shù)包括: AttachParameters:該函數(shù)用于將所有必要的 SqlParameter 對象連接到正在運(yùn)行的 SqlCommand。 AssignParameterValues:該函數(shù)用于為 SqlParameter 對象賦值。 PrepareCommand:該函數(shù)用于對命令的屬性(如連接、事務(wù)環(huán)境等)進(jìn)行初始化。 ExecuteReader:此專用 ExecuteReader 實(shí)現(xiàn)用于通過適當(dāng)?shù)?CommandBehavior 打開 SqlDataReader 對象,以便最有效地管理與閱讀器關(guān)聯(lián)的連接的有效期。 SqlHelper體驗(yàn)談: 以下載自CEOCIO(MVP/CSDN_WEB開發(fā)版主)的Blog(51aspx.com): 微軟提供的Data Access Application Block中的SQLHelper類中封裝了最常用的數(shù)據(jù)操作,各個使用者調(diào)用他而寫的代碼也有很大區(qū)別。 對于一個返回DataSet的方法我原來是這樣寫的:
  • public DataSet GetDepartmentMemberList(int departmentID)
  • {
  • try
  • {
  • string sql = "OA_Department_GetDepartment_Members";
  • string conn = ConfigurationSettings.AppSettings["strConnection"];
  • SqlParameter[] p =
  • {
  • SqlHelper.MakeInParam("@departmentID",SqlDbType.Int,4,departmentID)
  • };
  • DataSet ds = SqlHelper.ExecuteDataset(conn,CommandType.StoredProcedure,sql,p);
  • return ds;
  • }
  • catch(System.Data.SqlClient.SqlException er)
  • {
  • throw new Exception(er.Message);
  • }
  • }
  • 復(fù)制代碼 現(xiàn)在我是這樣來寫的: //連接字符串
  • private string _connectionString = ConfigurationSettings.AppSettings["strConnection"];
  • public string ConnectionString
  • {
  • get {return this._connectionString;}
  • set {this._connectionString = value;}
  • }
  • public DataSet GetNewsToIndexPage(int NewsTypeID)
  • {
  • return GetDataSet("yzb_GetNewsToIndexPage",GetNewsToIndexPage_Parameters(NewsTypeID));
  • }
  • 復(fù)制代碼 //設(shè)置存儲過程參數(shù)
  • private SqlParameter[] GetNewsToIndexPage_Parameters(int NewsTypeID)
  • {
  • SqlParameter[] p =
  • {
  • SqlHelper.MakeInParam("@NewsTypeID",SqlDbType.Int,4,NewsTypeID)
  • };
  • return p;
  • }
  • 復(fù)制代碼 //這里才真正調(diào)用SqlHelper
  • private DataSet GetDataSet(string sql, params SqlParameter[] p)
  • {
  • return SqlHelper.ExecuteDataset(ConnectionString,CommandType.StoredProcedure,sql,p);
  • }
  • 復(fù)制代碼 代碼更加靈活,更加安全了:P 做為一個懶人,大笨狼51aspx我經(jīng)常這樣寫:
  • System.Data.DataTable dt=SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING_NON_DTC,CommandType.Text,sql).Tables[0];
  • 復(fù)制代碼 直接返回DataTable, 返回表集合基本不用,只返回一個table用于綁定。 string conn = ConfigurationSettings.AppSettings["strConnection"]; 我寫在SqlHelper.CONN_STRING_NON_DTC里面 MakeInParam代碼煩瑣,如果查詢輸入條件不可能有組合SQL, 我直接exec pronamr paraargs 如果查詢輸入條件存在安全問題,或者帶返回參數(shù) 再用
  • SqlParameter[] queryParam=new SqlParameter[] {
  • new SqlParameter("@UserID",SqlDbType.Int)
  • };
  • queryParam[0].Value=this.UserID;
  • 復(fù)制代碼 組合sql語句用到@和string.Format技巧.例如:
  • sql=@"UPDATE Test_User_Statistic
  • SET
  • Test_User_Statistic.[IsQualified]={0},
  • Test_User_Statistic.[Reason]='{1}'
  • WHERE UserID={2}" ;
  • sql= string.Format(sql,IsQualified,Reason,userID);
  • SqlHelper.ExecuteNonQuery(SqlHelper.CONN_STRING_NON_DTC,CommandType.Text,sql);
  • 復(fù)制代碼 其中sql語句可以借助SQL的查詢分析器生成。這么干要保證安全,如果有輸入漏洞,建議還是用SqlParameter[]緩存參數(shù),因?yàn)樗鼤压粜缘拇a,比如帶單引號分號的,當(dāng)作普通字符處理。

    ?

    《新SqlHelper 配置和應(yīng)用方法詳解 》http://blog.csdn.net/bobby96333/article/details/7241289

    轉(zhuǎn)載于:https://www.cnblogs.com/johntom/archive/2012/04/06/2435383.html

    總結(jié)

    以上是生活随笔為你收集整理的SqlHelper详解(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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