資料集的結構定義與執行個體的關係(轉)

來源:互聯網
上載者:User
資料 資料集的結構定義與執行個體的關係
www.yescnet.com   CNET中文網

在.net的資料庫開發中,不可避免的要使用到資料集(dataset),在閱讀msdn學習資料集使用的時候,由於沒有清晰的區分資料集的定義和執行個體,在操作中,總是這裡做一個資料集,那裡做一個資料集,繞來繞去,卻不知所以然,待全部完成後,仔細思考一下, 才發現此資料集非彼資料集,其中一部分是資料集的定義,另一部分才是充滿資料的資料集執行個體。因此為方便大家的理解,在這裡將資料集的定義與執行個體分析一遍,以期有助於各位看客的.net的多層資料庫開發。此文章中的例子程式是vs.net studio beta 2中的msdn 中的walkthrough(別跟我說你找不到):webforms application walkthroughs 中的vb類的。如果你有什麼沒看懂的,可以參考一下。

下面伴隨例子程式,分析說明在不同的情況下,這些很容易搞混淆的資料集的定義和執行個體。
首先,我們建立一個vb工程。工程類型為Visual Basic Projects,在模板選擇ASP.NET Web,命名為MyWebForm。
在visial studio.net 為你產生了許多檔案之後,在工程中添加一個component。然後在component中添加一個sqlDataAdapter或OleDataAdapter,根據嚮導,串連上資料庫,配置好資料庫適配器。資料庫適配器是直接面對資料庫的,所有的對資料庫的操作的命令比如select, update, insert, delete等等,一般都是指派給適配器。適配器配置好以後,你會發現菜單上多了資料的功能表項目,將其點開,會發現有“產生資料集”的功能表項目。點擊後,彈出產生資料集的視窗,你可以選擇建立資料集,資料集的名字是dsCustomers,此時的資料集實際上是指一個資料集的定義,也就是一個用xml格式表示的,檔案名稱為'dsCustomers.xsd'的資料集定義檔案。注意它並不包含任何的資料庫中的資料,而只是描述一下將來如果哪個資料集(包含真正的資料,也就是執行個體)是用它來描述的,那麼其中的資料是一些什麼含義。選中要添加到資料集中的表,確認最後的‘將此資料集添加到設計器’前的複選框沒有打勾。之所以要將此處的勾去掉,是因為它是決定是否要在設計器上建立一個資料集執行個體的選項,要驗證這一點,你可以試一試打上勾是什麼樣子。如果你用預設的dataset1的資料集名稱,效果很不明顯,因為資料集定義的檔案名稱叫‘dataset1.xsd’,而添加到設計器上的資料集執行個體取名也叫'dataset1',令人疑惑,如果你自己將資料集的名稱改為'dsMyDataset',那麼你會發現產生的資料集定義的檔案名稱叫'dsMyDataSet.xsd',而添加到設計器的資料集執行個體叫'dsMyDataset1',此時就很明顯的表明,設計器上的資料集是一個可以容納實際資料的資料集執行個體。我們因為不需要在設計器上將資料提取出來,所以不要在此選項前打勾。資料集產生之後,我要提醒一下各位,當你雙擊開啟xsd檔案看到的畫面和msdn中的截圖很不一樣。我一直沒搞懂msdn上的截圖是怎麼做出來的,它為什麼會有兩個elements,而我按照它的方法總是只出來一個element。在這裡,我轉悠了好久,直到確認我的並沒錯,其餘也不想管msdn是否錯了。
我們需要的此component中添加一個方法,是專門用來將傳入的資料集執行個體填充的。編碼是這樣的:
Public Sub FillDataSet(ByVal dSet As dsCustomers)
SqlDataAdapter1.Fill(dSet)
End Sub
將component儲存。
接下來,我們要在介面上添加資料集執行個體。點開webform1.aspx,從工具箱中的資料分類裡拖拽一個dataset控制項,彈出添加資料集視窗。選中第一個選鈕,然後選擇我們剛才建立的資料集定義dsCustomers,確定即可。於是webform1的下面的控制項箱中有了一個以1結尾的資料集dsCustomers1,注意這個1,它表明這是一個使用先前的資料集定義的資料集執行個體。此時,它裡面還沒有資料,我們用滑鼠雙擊webform1.aspx的頁面,開啟代碼編輯視窗。要想將資料集執行個體中填滿資料, 我們可以利用上一個步驟建立的component。首先申明dim mycomp as component1。由於component屬於本工程,所以一切正常,如果component屬於別的工程或直接在網上,那麼,你必須先引用它。接下來,我們用componet中的方法填充webform1.aspx中的資料集執行個體。編碼是:
mycomp.fillDataSet(dsCustomer1)。好了,因為這個方法的傳入參數是用dsCustomer定義的,而現在往裡傳的webform1.aspx上的執行個體dsCustomer1也是用dsCustomer定義的,所以dsCustomer1可以傳入component,用component 中的資料配接器進行填充。
經過以上的分析,相信各位應該不會再將資料集的定義和實際使用的資料集執行個體搞混了。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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