以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  [合集] 该不该用DataSet?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11816)


--  作者:admin
--  发布时间:11/9/2004 2:26:00 AM

--  [合集] 该不该用DataSet?


发信人: DRAGONESE (龙裔◎小兔子乖乖), 信区: DotNET
标  题: [合集] 该不该用DataSet?
发信站: BBS 水木清华站 (Thu Sep 18 18:03:38 2003), 站内

☆─────────────────────────────────────☆
   GMeazza (一个球员,一世传说) 于  (Tue Sep 16 16:17:34 2003)  提到:

微软的网上书店层与层之间的数据传输都是用的DataSet,而网上宠物商店例程用的又都
是自己封装的数据对象。

那么,到底在什么情况下用DataSet传递数据好一些呢?有什么可以参考的原则吗?
我个人觉得用DataSet会有如下缺点:
1.数据量比较大:主表从表的数据,临时数据等
2.面向对象违背:从数据库到各层以及最后的UI,对数据表和字段进行操作,都不是面向
对象的。

优点:从数据查询书数据到显示到UI以及返回数据库都比较简单。编码量比较小。
请各位大虾指教,谢谢。




☆─────────────────────────────────────☆
   fayewong (王菲.1 JumpAhead) 于  (Tue Sep 16 16:28:23 2003)  提到:

你说得已经比较多了
其实DataSet可以用面向对象的方法进行封装,类似TypedDataSet
还有,如果考虑null值的存取等细节,不用dataset开发数据结构还是很麻烦的

【 在 GMeazza (一个球员,一世传说) 的大作中提到: 】
∶微软的网上书店层与层之间的数据传输都是用的DataSet,而网上宠物商店例程用的又都
∶是自己封装的数据对象。
∶那么,到底在什么情况下用DataSet传递数据好一些呢?有什么可以参考的原则吗?
∶我个人觉得用DataSet会有如下缺点:
∶1.数据量比较大:主表从表的数据,临时数据等
∶2.面向对象违背:从数据库到各层以及最后的UI,对数据表和字段进行操作,都不是面向
∶对象的。
∶优点:从数据查询书数据到显示到UI以及返回数据库都比较简单。编码量比较小。
∶请各位大虾指教,谢谢。




☆─────────────────────────────────────☆
   GMeazza (一个球员,一世传说) 于  (Tue Sep 16 16:56:47 2003)  提到:


谢谢你的答复。:)
1.对Dataset进行封装:那个网上书店例程有做了一些,你觉得有没有必要对DataSet
进行更加好的封装,使得各个层访问数据的时候就是我的封装类.方法名进行,不用
直接对DataSet和数据库表啊字段的进行直接操作,也就是可以不关心数据库的细节。
我在这个封装类中用类似于Adapter设计模式来进行,为DataSet和各层使用者之间进行
接口的转换。
2.null: 用DataSet的时候,也需要对null进行判断的吧?而如果是数据对象的话,只要
生成该对象时判断处理一次就行了。

不知有没有人这样用过,呵呵。
欢迎大家批评指正

【 在 fayewong (王菲.1 JumpAhead) 的大作中提到: 】
∶你说得已经比较多了
∶其实DataSet可以用面向对象的方法进行封装,类似TypedDataSet
∶还有,如果考虑null值的存取等细节,不用dataset开发数据结构还是很麻烦的




☆─────────────────────────────────────☆
   fayewong (王菲.1 JumpAhead) 于  (Tue Sep 16 17:08:13 2003)  提到:

我的意思是如果用一般的对象,属性可能是int类型
这样我必须规定一个值来代表null,这样就损失掉一个int值
如果是string,我是不是要规定""或者"null"代表空值呢?都不太妥当
如果DateTime呢?
各种数据类型要各自处理,很烦琐
如果用DataSet
这个字段本身就可以储存Null
我只需要在读出来,和放回去的时候做额外的判断就好了
甚至可以做成自己的绑定方法

【 在 GMeazza (一个球员,一世传说) 的大作中提到: 】
∶谢谢你的答复。:)
∶1.对Dataset进行封装:那个网上书店例程有做了一些,你觉得有没有必要对DataSet
∶进行更加好的封装,使得各个层访问数据的时候就是我的封装类.方法名进行,不用
∶直接对DataSet和数据库表啊字段的进行直接操作,也就是可以不关心数据库的细节。
∶我在这个封装类中用类似于Adapter设计模式来进行,为DataSet和各层使用者之间进行
∶接口的转换。
∶2.null: 用DataSet的时候,也需要对null进行判断的吧?而如果是数据对象的话,只要
∶生成该对象时判断处理一次就行了。
∶不知有没有人这样用过,呵呵。
∶欢迎大家批评指正




☆─────────────────────────────────────☆
   GMeazza (一个球员,一世传说) 于  (Tue Sep 16 17:13:52 2003)  提到:

你说的有道理
但如果是数据对象我也可以不给它值,让它等于null好了
访问的时候也是判断方法的返回值是不是等于null一样的效果啊.

【 在 fayewong (王菲.1 JumpAhead) 的大作中提到: 】
∶我的意思是如果用一般的对象,属性可能是int类型
∶这样我必须规定一个值来代表null,这样就损失掉一个int值
∶如果是string,我是不是要规定""或者"null"代表空值呢?都不太妥当
∶如果DateTime呢?
∶各种数据类型要各自处理,很烦琐
∶如果用DataSet
∶这个字段本身就可以储存Null
∶我只需要在读出来,和放回去的时候做额外的判断就好了
∶甚至可以做成自己的绑定方法




☆─────────────────────────────────────☆
   fayewong (王菲.1 JumpAhead) 于  (Tue Sep 16 17:33:35 2003)  提到:

像int这样的类型永远不会是null

【 在 GMeazza (一个球员,一世传说) 的大作中提到: 】
∶你说的有道理
∶但如果是数据对象我也可以不给它值,让它等于null好了
∶访问的时候也是判断方法的返回值是不是等于null一样的效果啊.




☆─────────────────────────────────────☆
   GMeazza (一个球员,一世传说) 于  (Tue Sep 16 17:36:35 2003)  提到:

恩,基本数据类型嘛
的确是DataSet的优点之一

【 在 fayewong (王菲.1 JumpAhead) 的大作中提到: 】
∶像int这样的类型永远不会是null




上一篇
返回上一页
回到目录
回到页首



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms