ADO.NET學習筆記(二)
2024-07-10 13:03:04
供稿:網友
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)
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。