在Microsoft Office System中使用ADO.NET數據集(二)
2024-07-10 13:03:18
供稿:網友
國內最大的酷站演示中心!
創建一個dataset
假定你必須使用一個靈活的數據對象,這個對象允許你包含多個表,在表與表之間設定關系,以及向前或向后讀取數據。
ado.net中提供這些特性——甚至更多——的對象就是dataset。dataset是一種斷開式(disconnected)對象,這意味著一旦填充完數據,就不必保持數據庫連接。到數據庫服務器的網絡連接即使斷開了也不會影響你的客戶端應用程序使用數據庫中的數據。這項技術的優勢之一就是你釋放數據庫連接給其他用戶,并且你的應用程序不再依賴于這個連接。然而,這也意味著數據庫中的數據在你填充完dataset后可能改變,你應該意識到這個可能的差異。
數據訪問層可以創建多個dataset對象。例如,你可能使用一個dataset容納靜態數據以便填充用戶界面上的一個列表框,或者你可能想使這些數據供多個用戶訪問。另一個對象可能包含某個用戶更新后的數據,將更改回傳到數據庫中的代碼盡可能簡單也是必要的。現在,你可以使用一個對象完成這所有的需求。
圖1展示了northwind數據庫中各個表的結構,這些表包含了客戶和訂單信息。你可以創建一個dataset,作為這個數據庫的結構鏡像,或者完全改變它以適應你的應用程序需求。
圖1:在northwind customers dataset 中使用的各個表的結構
下面的代碼在getdataset方法中定義了一個dataset,包含了用戶訂單數據的全部列。它帶有一個bsaveschema參數,用于指示該過程是否需要將dataset對象的xml和xml架構的拷貝保存為磁盤文件,這些文件將在該應用程序的其他部分使用。
getdataset的代碼以實例化一個新的空dataset對象開始,這個dataset對象被命名為northwindcustomerorders。如果你不提供給這個dataset一個名稱,這個dataset將采用默認的命名newdataset。這在大多數情況下沒有什么問題,但是當你從這個dataset生成并使用xml時,這個名字有時將作為xml結構的一部分。
public shared function getdataset(byval bsaveschema as boolean) as dataset
'instantiate the dataset, giving it a custom name
'(the default name is newdataset)
dim ds as new dataset("northwindcustomerorders")
下一步將建立數據庫連接——從應用程序配置文件中讀取數據庫連接字符串。
'set up the connection to the database, reading from the app.config
dim sqlcnn as new sqlconnection
sqlcnn.connectionstring = _
configurationsettings.appsettings("connectdb")
sqlcnn.open()
有幾種方法創建dataset 中的datatable對象來容納關系數據。其中一種方法就是使用sql語句(作為一個字符串變量)。這很容易辦到,但是,通常你更希望使用存儲過程來訪問數據。下面代碼中簡單的select語句無需任何參數——它返回表中完整的記錄集合。
大多數ado.net類,同.net framework中其他許多類一樣,擁有多個構造函數,每個構造函數具有不同參數,以便于你選擇如何實例化對象。你可以傳遞一個內容為sql語句的字符串和一個連接對象給sqlcommand對象的構造函數,實例化一個sqlcommand對象。