ASP.NET2.0通用数据访问类
ADO.NET2.0提出了全新的System.Data.Common命名空間。使WEB開發(fā)與后臺(tái)數(shù)據(jù)庫(kù)無關(guān)的數(shù)據(jù)訪問代碼,讓WEB程序在運(yùn)行的時(shí)候決定使用上述哪個(gè)提供器,所以性能上無影響。
1:通常的做法是在Web.Config配置中添加連接字符串。如下
<connectionStrings>
<add name="ConnectionString"
connectionString="server=(local)"SQLEXPRESS;database=Dataname;uid=username;pwd=password" providerName="System.Data.SqlClient"/>
</connectionStrings>--這里使用SQL數(shù)據(jù)提供器
2:這里將添加靜態(tài)類WebConfiguration.cs 完成對(duì)連接字符串和數(shù)據(jù)提供器的讀取
public static class WebConfiguration
{
//使用readonly的好處是可以在構(gòu)造器中動(dòng)態(tài)設(shè)置字段的值
??? private readonly static string dbConnectionString;
??? private readonly static string dbProviderName;
?static WebConfiguration()
?????? {
???? ???? //將連接字符串賦值給只讀字段dbConnectionString;
???? dbConnectionString= ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
?????? //將數(shù)據(jù)提供器賦值給自讀字段dbProviderName
???? dbProviderName= ConfigurationManager.ConnectionStrings["ConnectionString"].ProviderName;
?????? }
??? public static string DbConnectionString
??? {
??????? //獲取連接字符串
??????? get { return dbConnectionString;}
??? }
??? public static string DbProviderName
??? {
??????? //供應(yīng)器的類型
??????? get { return dbProviderName; }
??? }
?}
3:創(chuàng)建通用數(shù)據(jù)訪問類GenericDataAccess.cs
Code
??1?using?System;
??2?using?System.Data;
??3?using?System.Data.Common;
??4?using?System.Configuration;
??5?using?System.Web;
??6?using?System.Web.Security;
??7?using?System.Web.UI;
??8?using?System.Web.UI.WebControls;
??9?using?System.Web.UI.WebControls.WebParts;
?10?using?System.Web.UI.HtmlControls;
?11?
?12?///?<summary>
?13?///?通用數(shù)據(jù)庫(kù)訪問代碼
?14?///?</summary>
?15?public?static?class?GenericDataAccess
?16?{
?17?????static?GenericDataAccess()
?18?????{
?19?
?20?????}
?21?????///?<summary>
?22?????///?創(chuàng)建DbCommand對(duì)象
?23?????///?</summary>
?24?????///?<returns></returns>
?25?????public?static?DbCommand?CreateCommand()
?26?????{
?27?????????string?dataProviderName?=?WebConfiguration.DbProviderName;
?28?????????string?connectionString?=?WebConfiguration.DbConnectionString;
?29?
?30?????????//開發(fā)與數(shù)據(jù)庫(kù)無關(guān)的代碼
?31?????????DbProviderFactory?factory?=?DbProviderFactories.GetFactory(dataProviderName);
?32?????????DbConnection?conn?=?factory.CreateConnection();
?33?????????conn.ConnectionString?=?connectionString;
?34?????????DbCommand?comm?=?conn.CreateCommand();
?35?????????comm.CommandType?=?CommandType.StoredProcedure;
?36?????????return?comm;
?37?????}
?38???///?<summary>
?39???///?執(zhí)行查詢,返回datatable
?40???///?</summary>
?41???///?<param?name="command"></param>
?42???///?<returns></returns>
?43?????public?static?DataTable?ExecuteSelectCommand(DbCommand?command)
?44?????{
?45?????????DataTable?table;
?46?????????try
?47?????????{
?48?????????????command.Connection.Open();
?49?????????????DbDataReader?reader?=?command.ExecuteReader();
?50?????????????table?=?new?DataTable();
?51?????????????table.Load(reader);
?52?????????????reader.Close();
?53?????????}
?54?????????catch?(Exception?ex)
?55?????????{
?56?????????????throw?new?Exception(ex.Message,?ex);
?57?????????}
?58?????????finally
?59?????????{
?60?????????????command.Connection.Close();
?61?????????}
?62?????????return?table;
?63??????????????
?64?????}
?65????///?<summary>
?66????///?執(zhí)行update?insert?del操作
?67????///?</summary>
?68????///?<param?name="command"></param>
?69????///?<returns>返回影響行數(shù)</returns>
?70?????public?static?int?ExecuteNonQuery(DbCommand?command)
?71?????{
?72?????????int?affectRows?=?-1;
?73?????????try
?74?????????{
?75?????????????command.Connection.Open();
?76?????????????affectRows?=?command.ExecuteNonQuery();
?77?????????}
?78?????????catch?(Exception?ex)
?79?????????{
?80?????????????throw?new?Exception(ex.Message,?ex);
?81?????????}
?82?????????finally
?83?????????{
?84?????????????command.Connection.Close();
?85?????????}
?86?????????return?affectRows;
?87?????}
?88?????///?<summary>
?89?????///?返回第一列第一行
?90?????///?</summary>
?91?????///?<param?name="command"></param>
?92?????///?<returns></returns>
?93?????public?static?string?ExecuteScalar(DbCommand?command)
?94?????{
?95?????????string?value?=?"";
?96?????????try
?97?????????{
?98?????????????command.Connection.Open();
?99?????????????value?=?command.ExecuteScalar().ToString();?
100?????????????
101?????????}
102?????????catch?(Exception?ex)
103?????????{
104?????????????throw?new?Exception(ex.Message,?ex);
105?????????}
106?????????finally
107?????????{
108?????????????command.Connection.Close();
109?????????}
110?????????return?value;
111?????}
112???
113?}
114?
?好的習(xí)慣是將SQL語句寫在存儲(chǔ)過程中。這個(gè)類摘自ASP.NET2.0電子商務(wù)開發(fā)實(shí)戰(zhàn)一書。
?這個(gè)類能夠滿足基本的數(shù)據(jù)訪問。
?
轉(zhuǎn)載于:https://www.cnblogs.com/freegarden/archive/2009/09/25/1574044.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET2.0通用数据访问类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .net 读word中文字方法
- 下一篇: 排序算法全分析