当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ADO.NET学习笔记(二)

ASP.NET
如何在ASP.NET中使用SmtpMail发送邮件
在VB.NET中利用Split和Replace函数计算字数
Attribute应用:简化ANF自定义控件初始化过程
ASP.NET 2.0移动开发入门之使用样式
ASP.NET 2.0中使用OWC生成图表
ASP.NET 2.0中控件的简单异步回调
一个无法捕获ADO.NET Dataset的内存错误
深入解读ADO.NET2.0的十大最新特性
.Net平台下的分布式缓存设计
ASP.NET全局异常处理浅析
ASP.NET 2.0中文验证码的实现
浅析.NET平台编程语言的未来走向
.net 框架程序设计收藏
使用ASP.NET MVC Futures 中的异步Action
详解.NET中的XmlReader与XmlWriter
关于.NET中的Server push技术
asp.net页面执行机制
对比JSP和ASP.NET的存储过程
.NET 4.0不会包含System.Shell.CommandLine
ASP.NET十个有效性能优化的方法

ASP.NET 中的 ADO.NET学习笔记(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 176 ::
收藏到网摘: n/a


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)