使用IsLine FrameWork開發ASP.NET程式之二—使用DataProvider 訪問資料 (上)

weixin_34219944發表於2010-04-22

 

    上一期的文章中我們提到DataProvider模組,這個模組完成了各種資料來源的操作,相容的資料來源包括SQL SERVER資料庫、Oracle資料庫、XML檔案、文字檔案、Config站點配置檔案等。基本約束關係如下圖所示:

        clip_image002

圖 2.1 DataProvider 基本約束關係

    這個模組主要包括以下名稱空間:

    ● IsLine.Data.ContainerDefiner名稱空間:

    IsLine.Data.ContainerDefiner是DataProvider的一個擴充套件,它定義了一些ADO.NET中常用的資料物件,以容器的角色出現在上層中,它可以根據一些列的快取策略,並根據這些策略對資料進行持久化,這個名稱空間依賴於名稱空間IsLine.HttpContent.HCDataTypeEnum。

    主要成員類為ContainerDefine ,它實現了介面ISqlContainer, IOracleContainer, IFileContainer, IDisposable),其中的IFileContainer.FileContent方法,返回或設定一個FileContent,該FileContent為IfileContainer介面成員,包含快取優化選項,該選項可在例項化時指定;其他方法包括SqlDataReader、OracleDataReader、DataSet、DataRow、Dispose()都是對ADO.NET的二次封裝,但是又包含了一些優化操作,比如當儲存大型資料時,DataProvider會自動開啟快取機制,以提高資料讀取效率。

    ● IsLine.Data.DataProvider名稱空間:

    這個名稱空間是DataProvider的主體,它完成了對資料的儲存操作。它依賴於名稱空間:IsLine.Security.Cryptography、IsLine.Data、IsLine.Data.Configuration。主要成員類名稱有DBProvider、OracleProvider(實現介面IOracleProvider)、SqlProvider(實現介面ISqlServerProvider)、FileProvider、XMLProvider、TextProvider、SuitConfigProvider。

    你可以使用自定義的工廠,也可以直接使用IsLine FrameWork中定義好的方法DataProvider處理資料,使用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>

<Pwd>111111</Pwd>
<DataBase>UML</DataBase> //SqlServer only
</DataBaseConnection>
</IsLine.Data.Configuration>

    其中DataBaseConnection指明資料庫型別,PwdType指明密碼加密策略,IsLine Provider內建3中策略供選擇,如配置檔案所示。以上示例為針對SqlServer,對於Oralce資料庫,同樣採用以上的格式配置,只不過稍作變化:

將DBType變更為IsLine.Data.Configuration.OracleConnectString;Server節點指明TNS別名;同時多出了OtherPlus節點中的內容會作為Oracle連線串的一部分,傳送給資料庫。

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

以上方法為結構化配置方法,如果讀者覺得這樣配置比較麻煩,可以使用以下簡單配置方法,免去節點的配置:

    SQL SERVER配置:

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

如果各位讀者希望得到更加詳細的方法與引數列表,請訪問我的部落格。

下面為大家列出一些執行的例項:

  1.執行一句sql語句:

    OracleProvider.ExecuteNonQuery(sql);

2.利用事務執行一批sql語句:

OracleProvider.ExecuteNonQuery(sql,true,CommandType.Text,null);

其中第二個引數說明開啟事務,執行第一個引數傳入的語句,語句之間以“!”號分隔。

3.執行一個儲存過程:

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

4.返回一個DataReader

new OracleProvider().ExecuteReader(sql);

6.使用指定連線返回一個DataSet

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

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

    在下一期,我們將完成資料訪問的最後一部分的介紹。

此文已在《軟體報》同步釋出,任何個人媒體不得轉載。

相關文章