ADO.NET學習筆記(二)

來源:互聯網
上載者:User
ado|筆記 4、DataSet
在ADO.NET中DataSet的作用是為資料來源提供一個斷開式的儲存,而不必關心資料來源,操作只用在DataSet中進行就行了。
有三種方法可以建立DataSet:1、通過DataAdapter 2、通過XML 檔案 3、用人工方法確定架構,然後逐行輸入資料。
主要介紹第一種方法。
DataAdapter用於將DataSet串連到基本資料存放區,本質上是一種元Command對象。
它包括SelectCommand對象,InsertCommand對象,UpdateCommand對象,DeleteCommand對象。
模板代碼:
Dim dataAdpater As New SqlDataAdapter("Select * From Student",conn)
Dim dataSet As New DataSet()
dataAdapter.Fill(dataSet)
這時dataSet的表名預設為Table
如果使用批處理查詢並將得到的結果填入dataSet中則表名預設為Table,Table1,Table2……

TableMappings:
表名映射:
產生dataAdapter之後再進行表名映射
dataAdapter.TableMappings.Add("Table","Customer")
dataAdapter.Fill(dataSet)
這時Table的別名就變為Customer(對dataSet用Table或Customer操作都可以),dataSet.Tables("Customer")就可以引用到這個表

dataAdapter.TableMappings.Add("ADONET","Customer")
dataAdapter.Fill(dataSet,"ADONET")
列名映射:
dataAdapter.TableMappings.Add("Table","Customer")
dataAdapter.TableMappings("Customer").ColumnMappings.Add("CustomerID","ID)
dataAdapter.FIll(dataSet,"Customer")

架構(Schema),通過FillSchema添加架構
1、添加主鍵
customerTable.PrimaryKey=New DataColumn[]{CustomerTable.Columns("CustomerID")} (通過數組的形式添加主鍵)

2、添加關係
dataSet.Relations.Add("Customers_Invoices",dataSet.Tables("Customers").Columns("CustomerID"),dataSet.Tables ("Invoinces").Columns("CustomerID"),true)

3、添加約束
有兩種主要約束:唯一約束、外碼約束(UniqueConstraint,ForeignKeyConstraint)
其中唯一約束又分為DeleteRule(串聯刪除約束)、UpdateRule(串聯更新約束)、AcceptRejectRule(調用AcceptChanges或 RejectChanges時的約束)

4、添加觸發器
可以對6中DataSet事件添加觸發器
RowChanging,RowChanged,ColumnChanging,ColumnChanged,RowDeleting,RowDeleted

5、列架構
比如添加列的屬性:customerTable.Columns("CustomerID").ReadOnly=true
或添加AutoIncrement列:
customerTable.Columns("CustomerID").AutoIncrement=true
customerTable.Columns("CustomerID").AutoIncrementSeed=1 (列起始位置)
customerTable.Columns("CustomerID").AutoIncrementStep=1 (列遞增步長)
可能有人會說這一切在DBMS裡面做不就行了嗎,幹嗎那麼大費周折的在ADO.NET對Dataset再寫一遍呢?
這主要是出於對效率方面的考慮,如果用戶端的錯誤輸入能在用戶端就被發現出來,而不用傳到服務端進行驗證的話就可以減少不必要的傳輸了。

運算式列:
Dim exColumn As New DataColumn("LineTotal")
exColumn.DataType=typeof(float)
exColumn.Expression="((price-(price*Discount))*Quantity)"
dataSet.Tables("items").Columns.Add(excolumn)




相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。