选择显示字体大小

用ado.net管理数据库


  使用ado.net管理数据库中的关系(relation)非常简单。作为返回单个行集合(rowset)到数据存储(data store)的代替,你可以返回多个行集合并在数据集(dataset)中将它们关联起来。 在ado.net中使用关联的数据表(datatable)有很多好处,包括有将数据存储为层次结构的能力、更容易更新数据、有在列中使用表达式的能力等等。

  本文介绍ado.net中基于列(column-based)的表达式和计算。我将演示数据列(datacolumn)上集合函数的使用、汇总、在整个数据集中执行其它类型的计算以及在数据表之间连接数据列。文中还举了几个实例。

  在sql查询中合计(summing)和平均值(averaging)对你来说很老套了,这要感谢ansi sql中有类似sum 和avg的集合函数。sql允许列的计算,例如按次序把产品单价乘以数量产生扩充价格。现在ado.net提供了一条途径扩展这些数据源之外的特征并进入n层结构应用程序中间或上层。在ado.net中使用列表达式,你能用数据集中的计算值建立自己的列,在同一行中计算其它列的值,甚至通过数据关系(datarelation)从父数据表或子数据表获取值。使用ado.net中的基于列的表达式和计算形成了新的管理数据的技术。

  当然,在ado.net中使用基于表达式的列、集合和计算有利也有弊。表达式可用于数据集的单个数据表或者通过数据关系交叉的两个数据表对象。本文将解释在ado.net和sql中基于表达式的列有什么不同,以及你能从它们中得到什么东西。本文讨论了许多操作,包括用表达式上滚(roll up)和下滚(roll down),它依赖于datarelation对象的关系。我将演示怎样在数据列对象中建立表达式,怎样使用数据集和sql建立集合函数,怎样在数据集中上滚和下滚字段,怎样在数据集中执行列的计算。

  sql中的表达式

  sql表达式为达到不同的目的有多种格式,包括字符串格式、用户定义函数和数学计算。如果sql语句将姓和名连接到一起、按订单条目次序计算扩充价格、或者在sql server 2000中包含一个用户定义函数来检索一个订单日期,sql语句就包含了表达式。

  表达式为程序开发人员从数据库中的其它字段衍生出的行集合中的返回值提供了很大的灵活性。关系型和标准的数据库不会保存订单条目的扩充价格,它只存储单价和数量。扩充价格能从这些值中计算出来,这样避免了数据不同步。例如,如果在一行中存储了数量、单价和扩充价格,可能出现数量为100,单价为7,扩充价格为100的情况。这种情况不该发生,但是如果存储了冗余数据就可能发生了。事务性数据库的通用准则是不存储可以衍生出的信息,例如扩充价格。

  这样就有了sql表达式表演的舞台了。扩充价格能通过在sql语句中建立计算列,将单价乘以数量衍生出。扩充价格又能计算帐户的折扣率等信息。下面的sql代码演示了怎样在sql表达式中连接字符串。例子将姓与名连接在一起并返回大写的全名,名字位于前面:

use pubs
go
select au_fname as firstname,
au_lname as lastname,
au_lname + ', ' + au_fname as fullname1,
(upper(au_fname) + ' ' + upper(au_lname)) as fullname2
from authors
order by
au_lname,
au_fname

  sql表达式能够在行集合中格式化字符串并执行计算,但是为了达到这个目的,你要注意一些问题:如果用上面的sql语句填充数据集,并且首行的数量列被修改了,表达式列不会跟着改变。例如,如果数量为10,价格为7,现在数量变为5,extendedprice列的值仍为70(10×7),数据没有同步。出现这种情况的主要原因是表达式没有从sql语句传递到ado.net数据集。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons