Enterprise Library1.0 -- DataAccess Application Block
??? Enterprise Library 對(duì)大家來說應(yīng)該不陌生,很早我就聽說了這個(gè)東西,但一直沒有時(shí)間來學(xué)習(xí),最近終于抽出時(shí)間來學(xué)習(xí)Enterprise Library,現(xiàn)在就把我學(xué)習(xí)過程中的一些實(shí)例發(fā)上來,供大家參考.Enterprise Library現(xiàn)在已經(jīng)有2.0版本了,但我也是后來才看到的,其他的就不多說了,先說1.0里面的Data Access Application Block,以后有時(shí)間在研究2.0.
??? 本來先看的是其中的Configuration Application Block,但我在Web項(xiàng)目中調(diào)試寫入XML時(shí)總是不能成功,后來查資料得知Web項(xiàng)目中的config文件不能通過程序來修改或創(chuàng)建,不知道是否確有此事,還望高手指點(diǎn),另外還不明白的是 Configuration Application Block在我們實(shí)際項(xiàng)目的開發(fā)中能起到什么樣的作用,昨天也沒想通.
??? 好了,我們來看看Data Access Application Block 吧,首先我們看一下如何用Enterprise Library 提供的配置工具來創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)實(shí)例.首先我們應(yīng)該新建我們所需項(xiàng)目,然后在Enterprise Library的安裝目錄的Bin目錄中找到EntLibConfig.exe文件,雙擊打開,并選擇File-->Open Application,打開剛剛新建項(xiàng)目的Web.Config文件,如下:
然后,右鍵單擊Application,選擇New--> DataAccess Application Block,如下圖:
?????? 然后會(huì)自動(dòng)在Data Access Block 節(jié)點(diǎn)下生成三個(gè)Connection String(保存新建的數(shù)據(jù)庫(kù)實(shí)例的連接字符串信息),DataBaseInstance(此節(jié)點(diǎn)存放數(shù)據(jù)庫(kù)實(shí)例名以及其他相關(guān)信息),DataBase Types(節(jié)點(diǎn)存放數(shù)據(jù)庫(kù)類型,如Sql Server?或 Oracle等).接著我們?cè)?Connection String ?下的 Sql Connection String 下配置好我們的數(shù)據(jù)庫(kù)連接信息(包括Server,Database,uid,pwd等).
????? 上面所說的都配置好了以后,我們就可以點(diǎn)擊 File-->Save All或Ctrl + Shift + S,如果配置沒有錯(cuò)誤的話,就會(huì)在你的項(xiàng)目中生成一個(gè)dataConfiguration.config文件,內(nèi)容如下:
<dataConfiguration>
??<xmlSerializerSection?type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,?Microsoft.Practices.EnterpriseLibrary.Data,?Version=1.1.0.0,?Culture=neutral,?PublicKeyToken=null">
????<enterpriseLibrary.databaseSettings?xmlns:xsd="http://www.w3.org/2001/XMLSchema"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?defaultInstance="EnterpriseLibrary"?xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data">
??????<databaseTypes>
????????<databaseType?name="Sqlserver"?type="Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase,?Microsoft.Practices.EnterpriseLibrary.Data,?Version=1.1.0.0,?Culture=neutral,?PublicKeyToken=null"?/>
??????</databaseTypes>
??????<instances>
????????<instance?name="EnterpriseLibrary"?type="Sqlserver"?connectionString="Sql?Connection?String"?/>
??????</instances>
??????<connectionStrings>
????????<connectionString?name="Sql?Connection?String">
??????????<parameters>
????????????<parameter?name="database"?value="EnterpriseLibrary"?isSensitive="false"?/>
????????????<parameter?name="Integrated?Security"?value="True"?isSensitive="false"?/>
????????????<parameter?name="pwd"?value=""?isSensitive="true"?/>
????????????<parameter?name="server"?value="shy"?isSensitive="false"?/>
????????????<parameter?name="uid"?value="sa"?isSensitive="false"?/>
??????????</parameters>
????????</connectionString>
??????</connectionStrings>
????</enterpriseLibrary.databaseSettings>
??</xmlSerializerSection>
</dataConfiguration>
在Web.config文件中加入了下面內(nèi)容:
????<section?name="enterpriselibrary.configurationSettings"?type="System.Configuration.IgnoreSectionHandler,?System,?Version=1.0.5000.0,?Culture=neutral,?PublicKeyToken=b77a5c561934e089"?/>
??</configSections>
??<enterpriselibrary.configurationSettings?xmlns:xsd="http://www.w3.org/2001/XMLSchema"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?applicationName="Application"?xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/configuration">
??<configurationSections>
????<configurationSection?xsi:type="ReadOnlyConfigurationSectionData"?name="dataConfiguration"?encrypt="false">
??????<storageProvider?xsi:type="XmlFileStorageProviderData"?name="XML?File?Storage?Provider"?path="dataConfiguration.config"?/>
??????<dataTransformer?xsi:type="XmlSerializerTransformerData"?name="Xml?Serializer?Transformer">
????????<includeTypes?/>
??????</dataTransformer>
????</configurationSection>
??</configurationSections>
??<keyAlgorithmStorageProvider?xsi:nil="true"?/>
??<includeTypes?/>
</enterpriselibrary.configurationSettings>
到此為止,我們使用Data Access Application?Block 的配置文件就基本上配置好了,下面我們來看看DataAccess Application Block 的幾種基本操作:
首先我們建立名為EnterpriseLibrary的數(shù)據(jù)庫(kù)(這個(gè)應(yīng)該在配置之前先建好的),在此數(shù)據(jù)庫(kù)中建一張表,名為 Person .
需要引用的程序集如下:
Microsoft.Practices.EnterpriseLibrary.Data
Microsoft.Practices.EnterpriseLibrary.Configuration
1.ExecuteNonQuery
????????///?執(zhí)行ExecuteNonQuery
????????///?</summary>
????????public?void?AddPerson()
????????{
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????db.ExecuteNonQuery(CommandType.Text,"insert?into?person?values(1,'pw',23,'男','3304122')");
????????}
2.ExecuteReader
????????///?執(zhí)行ExecuteReader,返回Person列表
????????///?</summary>
????????///?<returns></returns>
????????public?IDataReader?GetPersonList()
????????{
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????
????????????string?sql?=?"select?*?from?person";
????????????DBCommandWrapper?dw?=?db.GetSqlStringCommandWrapper(sql);
????????????return?db.ExecuteReader(dw);
????????}
3.ExecuteDataSet
????????///?執(zhí)行ExecuteDataSet,返回Person列表
????????///?</summary>
????????///?<returns></returns>
????????public?DataSet?GetPersonList()
????????{
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????
????????????string?sql?=?"select?*?from?person";
????????????DBCommandWrapper?dw?=?db.GetSqlStringCommandWrapper(sql);
????????????return?db.ExecuteDataSet(dw);
????????}
4.ExecuteScalar
????????///?執(zhí)行ExecuteScalar,返回單一的值
????????///?</summary>
????????///?<returns></returns>
????????public?int?GetPersonNum()
????????{
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????string?sql?=?"select?count(*)?from?person";
????????????DBCommandWrapper?dw?=?db.GetSqlStringCommandWrapper(sql);
????????????return?(int)db.ExecuteScalar(dw);
????????}
?
5.執(zhí)行存儲(chǔ)過程
//執(zhí)行存儲(chǔ)過程????????//首先我們?cè)跀?shù)據(jù)庫(kù)中建一個(gè)名為"SelectPersonBySex"的存儲(chǔ)過程
????????//如果有輸入?yún)?shù)可以這樣寫:dw.AddOutParameter("@sex",System.Data.DbType.String,'男');
????????//執(zhí)行完存儲(chǔ)過程后取輸出參數(shù)的值的方法是:dw.GetParameterValue("@sex");
????????public?DataSet?GetPersonListBySex(string?sex)
????????{
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????DBCommandWrapper?dw?=?db.GetStoredProcCommandWrapper("SelectPersonBySex");
????????????dw.AddInParameter("@sex",System.Data.DbType.String,sex);
????????????return?db.ExecuteDataSet(dw);
????????}
6.在程序中加入事務(wù)
????????{
????????????//創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????//在程序中加入事務(wù)
????????????using?(IDbConnection?conn?=?db.GetConnection())
????????????{
????????????????//打開連接
????????????????conn.Open();
????????????????//建立一個(gè)事務(wù)
????????????????System.Data.IDbTransaction?trans?=?conn.BeginTransaction();
????????????????
????????????????try
????????????????{
????????????????????//循環(huán)向person表插入記錄
????????????????????for(int?i=2;i<10;i++)
????????????????????{
????????????????????????db.ExecuteNonQuery(CommandType.Text,@"insert?into?person?values("?+?i?+?",'pw1',23,'男','3304122')");
????????????????????}
????????????????????//提交事務(wù)
????????????????????trans.Commit();
????????????????}
????????????????catch(Exception)
????????????????{
????????????????????//回滾事務(wù)
????????????????????trans.Rollback();
????????????????}
????????????????finally
????????????????{
????????????????????//關(guān)閉連接
????????????????????conn.Close();
????????????????}
????????????}
????????}
關(guān)于DataAccess Application Block 的基本操作就說到這,以后再有更深的研究我繼續(xù)往上發(fā),還有想了解一下,學(xué)過Enterprise Library的朋友們對(duì)它的看法,歡迎在此發(fā)表你的個(gè)人意見.
Email:pwei013@163.com
轉(zhuǎn)載于:https://www.cnblogs.com/pw/archive/2006/05/30/412599.html
總結(jié)
以上是生活随笔為你收集整理的Enterprise Library1.0 -- DataAccess Application Block的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 环境安装 Node、ngin
- 下一篇: Dapper的基本使用 [转]