Enterprise Library1.0 -- DataAccess Application Block
??? Enterprise Library 對大家來說應該不陌生,很早我就聽說了這個東西,但一直沒有時間來學習,最近終于抽出時間來學習Enterprise Library,現在就把我學習過程中的一些實例發上來,供大家參考.Enterprise Library現在已經有2.0版本了,但我也是后來才看到的,其他的就不多說了,先說1.0里面的Data Access Application Block,以后有時間在研究2.0.
??? 本來先看的是其中的Configuration Application Block,但我在Web項目中調試寫入XML時總是不能成功,后來查資料得知Web項目中的config文件不能通過程序來修改或創建,不知道是否確有此事,還望高手指點,另外還不明白的是 Configuration Application Block在我們實際項目的開發中能起到什么樣的作用,昨天也沒想通.
??? 好了,我們來看看Data Access Application Block 吧,首先我們看一下如何用Enterprise Library 提供的配置工具來創建一個數據庫實例.首先我們應該新建我們所需項目,然后在Enterprise Library的安裝目錄的Bin目錄中找到EntLibConfig.exe文件,雙擊打開,并選擇File-->Open Application,打開剛剛新建項目的Web.Config文件,如下:
然后,右鍵單擊Application,選擇New--> DataAccess Application Block,如下圖:
?????? 然后會自動在Data Access Block 節點下生成三個Connection String(保存新建的數據庫實例的連接字符串信息),DataBaseInstance(此節點存放數據庫實例名以及其他相關信息),DataBase Types(節點存放數據庫類型,如Sql Server?或 Oracle等).接著我們在?Connection String ?下的 Sql Connection String 下配置好我們的數據庫連接信息(包括Server,Database,uid,pwd等).
????? 上面所說的都配置好了以后,我們就可以點擊 File-->Save All或Ctrl + Shift + S,如果配置沒有錯誤的話,就會在你的項目中生成一個dataConfiguration.config文件,內容如下:
<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文件中加入了下面內容:
????<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的數據庫(這個應該在配置之前先建好的),在此數據庫中建一張表,名為 Person .
需要引用的程序集如下:
Microsoft.Practices.EnterpriseLibrary.Data
Microsoft.Practices.EnterpriseLibrary.Configuration
1.ExecuteNonQuery
????????///?執行ExecuteNonQuery
????????///?</summary>
????????public?void?AddPerson()
????????{
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????db.ExecuteNonQuery(CommandType.Text,"insert?into?person?values(1,'pw',23,'男','3304122')");
????????}
2.ExecuteReader
????????///?執行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
????????///?執行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
????????///?執行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.執行存儲過程
//執行存儲過程????????//首先我們在數據庫中建一個名為"SelectPersonBySex"的存儲過程
????????//如果有輸入參數可以這樣寫:dw.AddOutParameter("@sex",System.Data.DbType.String,'男');
????????//執行完存儲過程后取輸出參數的值的方法是: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.在程序中加入事務
????????{
????????????//創建數據庫實例
????????????Database?db?=?DatabaseFactory.CreateDatabase("EnterpriseLibrary");
????????????//在程序中加入事務
????????????using?(IDbConnection?conn?=?db.GetConnection())
????????????{
????????????????//打開連接
????????????????conn.Open();
????????????????//建立一個事務
????????????????System.Data.IDbTransaction?trans?=?conn.BeginTransaction();
????????????????
????????????????try
????????????????{
????????????????????//循環向person表插入記錄
????????????????????for(int?i=2;i<10;i++)
????????????????????{
????????????????????????db.ExecuteNonQuery(CommandType.Text,@"insert?into?person?values("?+?i?+?",'pw1',23,'男','3304122')");
????????????????????}
????????????????????//提交事務
????????????????????trans.Commit();
????????????????}
????????????????catch(Exception)
????????????????{
????????????????????//回滾事務
????????????????????trans.Rollback();
????????????????}
????????????????finally
????????????????{
????????????????????//關閉連接
????????????????????conn.Close();
????????????????}
????????????}
????????}
關于DataAccess Application Block 的基本操作就說到這,以后再有更深的研究我繼續往上發,還有想了解一下,學過Enterprise Library的朋友們對它的看法,歡迎在此發表你的個人意見.
Email:pwei013@163.com
轉載于:https://www.cnblogs.com/pw/archive/2006/05/30/412599.html
總結
以上是生活随笔為你收集整理的Enterprise Library1.0 -- DataAccess Application Block的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 环境安装 Node、ngin
- 下一篇: Dapper的基本使用 [转]