ASP.NET企業開發架構IsLine FrameWork系列之五–DataProvider 資料訪問(中)

來源:互聯網
上載者:User

    接上文

    使用DataProvider前,需要先在web.config中配置以下節點,添加於<configSections></configSections>之間:

   

<IsLine.Data.Configuration>

<DataBaseConnection> <DBType>IsLine.Data.DataTypeEnum.DataBaseType.SqlServer</DBType>

<Server>Server IP</Server>

<UserID>sa</UserID>

<PwdType>Cryptography.Decrypting</PwdType> // or <PwdType>Cryptography.StrengthDecrypting</PwdType> or <PwdType>Cryptography.None</PwdType>

<Pwd>111111</Pwd>

<DataBase>UML</DataBase> //SqlServer only

</DataBaseConnection>

</IsLine.Data.Configuration>

 

 

    其中DataBaseConnection指明資料庫類型,PwdType指明密碼加密策略,IsLine Provider內建3中策略供選擇,如設定檔所示。以上樣本為針對SqlServer,以下為Oralce節點配置方法:

 

<IsLine.Data.Configuration>

<DataBaseConnection> <DBType>IsLine.Data.Configuration.OracleConnectString</DBType>

<Server>TNS別名</Server>

<UserID>sa</UserID>

<PwdType>Cryptography.Decrypting</PwdType> // or <PwdType>Cryptography.StrengthDecrypting</PwdType> or <PwdType>Cryptography.None</PwdType>

<Pwd>111111</Pwd>

<OtherPlus>Provider=MSDAORA.1; Persist Security Info=False;</OtherPlus> //Oracle Only

</DataBaseConnection>

</IsLine.Data.Configuration>

 

 

    或者可以使用以下簡單配置方法,免去節點配置的麻煩:

    SQLSERVER:

<add key=" IsLine.Data.Configuration.SqlServerConnectString " value="Data Source=Server IP;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />

    ORACLE:

    <add key="IsLine.Data.Configuration.OracleConnectString" value="Data Source=TNS別名;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />

    節點配置好後,使用以下方法調用,調用時分為連線導向與非串連兩種方式,連線導向的操作(例如返回DataSet/Reader/Adapter等)使用前須進行執行個體化,使用後須調用.Dispost()方法釋放資源,Dispost()是一個經過DataProvider重寫的方法,一旦調用將會釋放所有資源,包括Connection、Command、DataReader等,而面向非串連操作則直接調用即可。如果使用DataReader、Adapter等為連線導向操作,單純執行sql語句為非串連操作,例如訪問資料庫單純執行依據sql語句可以使用:

    OracleProvider.ExecuteNonQuery();

    或

    SqlProvider.ExecuteNonQuery();

    執行個體化例子:

    OracleProvider op = new OracleProvider();

    op.SomeFunc();

方法列表如下:

方法名稱

說明

是否須執行個體化

OraBit2Bool

 

ExecuteScalar

4次重載,傳入sql語句後預存程序名稱,返回首個元素

Bool2OraBit

 

ExecuteNonQuery

5次重載,傳入sql語句後預存程序名稱,在資料庫予以執行

ExecuteReader

5次重載,傳入sql語句後預存程序名稱,返回對應類型的DataReader

ExecuteDataSet

5次重載,傳入sql語句後預存程序名稱,返回對應類型的DataSet

ExecuteDataAdapter

5次重載,傳入sql語句後預存程序名稱,返回對應類型的DataAdapter

Dispose

釋放所有資源

conn

為執行個體指定Connection

cmd

為執行個體指定Command

傳入參數列表:(針對以上重載方法傳入參數說明)

參數名

參數類型

說明

cmdText

string

Sql語句或預存程序名

connectionKey

string

串連串(僅當不使用web.config中配置節點中的資料庫連接時使用,例如在一個項目中,有時會使用很多個資料庫,主業務資料庫、日誌資料庫等等,這時就可以將主業務資料庫配置為預設資料庫,使用日誌資料庫使用該參數傳遞)

IsUsingOracleTransaction

bool

是否啟用事物處理(同事務中的sql語句之間使用“!”串連)

cmdType

CommandType

該參數指明“cmdText”參數是sql語句還是預存程序

commandParameters

Params System.Data.OracleClient.OracleParameter[]

使用Params時使用

connection

OracleConnection

作用與“connectionKey”相同,不過是執行個體化好了的

connection

SqlConnection

同上

srcTable

string

使用“ExecuteDataSet”方法時,填充表的名稱

commandParameters

params System.Data.SqlClient.SqlParameter[]

使用Params時使用

執行個體:

    1.執行一句sql語句:

    OracleProvider.ExecuteNonQuery(sql);

 

2.利用事務執行一批sql語句:OracleProvider.ExecuteNonQuery(sql,true,CommandType.Text,null);

 

3.執行一個預存程序:

  1. OracleParameter[] OracleParam = new OracleParameter[6];

    OracleParam[0] = new OracleParameter("ParameterName1", OracleType.VarChar, 32);

    OracleParam[0].Value = "a";

    OracleParam[1] = new OracleParameter("ParameterName2", OracleType.VarChar, 20);

    OracleParam[1].Value = "b";



    OracleProvider.ExecuteNonQuery(StoredProcedureName,null,CommandType.StoredProcedure, OracleParam);

     

    返回一個DataReader

new OracleProvider().ExecuteReader(sql);

  1. 返回一個DataSet

OracleProvider().ExecuteDataSet(sql);

  1. 使用指定串連返回一個DataSet

new OracleProvider().ExecuteDataSet(sql,"ConnectionStr",0);

  1. 調用預存程序返回一個DataSet

    new OracleProvider().ExecuteDataSet(sql,CommandType.StoredProcedure,"TestTable",null);

 

    以上只是幾個很簡單的例子,總之使用DataProvider,就可以實現通過配置控制資料庫,而代碼層面只有動作陳述式,沒有資料庫連接、配置語句的目的了。

DataProvider中還有一個類“DBProvider”,這個Provider可以不指明是SQLSERVER還是Oracle資料庫或是其他資料庫,你需要提前遵守上文中提到的相關介面契約,實現為Configution.dll,並放置於約定位置(這個位置在web.config中配置),程式就會自動反射並使用其中的方法了。將來你更改資料庫時,只需要更換這個DLL就可以了,不需要修改主程式。

  “DBProvider”還封裝了微軟的DbProviderFactory,這個大家一定知道,我就不多介紹了,調用方法名稱與方式與以上介紹的都一樣。

 

   未完待續

    我是李鳴(Aicken) 歡迎您關注我的下一篇文章。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.