程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> IsLine FrameWork系列之五--DataProvider 數據訪問(中)

IsLine FrameWork系列之五--DataProvider 數據訪問(中)

編輯:關於.NET

接上文

使用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.執行一個存儲過程:

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);

返回一個DataSet

OracleProvider().ExecuteDataSet(sql);

使用指定連接返回一個DataSet

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

調用存儲過程返回一個DataSet

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

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

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved