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收集整理,欢迎访问。