我觉得 DataTable 很不好用,头都晕死了
在数据访问层中从数据库中取得的数据,经过逻辑层处理之后,返回到界面层,在经过这一系列的变换处理之后,无论是逻辑处理还是界面取数据显示,程序员都要知道他得到的 DataTable 或 DataSet, DataView 等等的表结构信息,比如程序员必须知道将要处理或显示的数据所在的列号,或列的名字等,为此程序员可能要到一步一步的跟踪到数据来源的代码中去。如果系统大了,又有了相似的功能和界面,这种数据很容易搞得乱七八糟,我已经几次被这种情况搞得晕头转向了。
各位有什么好的经验吗?
问题点数:40、回复次数:25Top
1 楼jc15271149(奶皮儿)回复于 2006-07-04 11:01:08 得分 0
dingTop
2 楼cansum396(漆黑的夜)回复于 2006-07-04 11:05:56 得分 0
在逻辑处理的时候转成class就可以了Top
3 楼sweet12345(幸福的狗狗)回复于 2006-07-04 11:12:24 得分 0
将你需要用的每个数据表查询结构转换为一个类(Class),每个字段转化为她的一个Property,这样你就不会头晕了,查询完之后将结果转化为类Top
4 楼mmens(快乐中前行!)回复于 2006-07-04 11:14:58 得分 0
可以写:DataTable.writexml(@"C:\temp.xml");查看。Top
5 楼fengyeng(在城里飘~~~~)回复于 2006-07-04 11:17:30 得分 0
学习Top
6 楼skyrain19782004(天宇)回复于 2006-07-04 11:18:08 得分 0
学习中Top
7 楼francsescoli(我爱世界杯)回复于 2006-07-04 11:21:43 得分 0
复杂的应用需要在物理数据和逻辑数据层直接进行映射,比如ORM映射,这样使得逻辑处理的数据和物理存储的表现形式无关。
也可以这样,.net中的数据集,提供了强类型schema机制,使用强类型和使用一般的Class一样,你用强类型就解决要记住数据库表字段的问题了。Top
8 楼noood(肥田)回复于 2006-07-04 11:24:45 得分 0
makeTop
9 楼noood(肥田)回复于 2006-07-04 11:25:22 得分 0
makeTop
10 楼noood(肥田)回复于 2006-07-04 11:26:02 得分 0
makeTop
11 楼net_boy(小明)回复于 2006-07-04 11:34:33 得分 0
我们一般作一个项目,在一个解决方案里基本要包含3个项目,一个是主项目,一个是DAO项目(表结构项目),还有一个就是规则项目(包含处理DAO的方法),也可以在建一个公共类项目,把一些通用方法放在里面Top
12 楼wwfy(我舞飞扬)回复于 2006-07-04 11:46:52 得分 0
对于后面数据结构不需要知道的人是:用户。
你这些(或列的名字等)都不想知道,那等10年后再做程序吧,估计可能就行了。
那时候可能真的不叫“写”程序,而是“做”程序了。Top
13 楼xiaozhimin1978(小灰狼)回复于 2006-07-04 15:44:45 得分 0
To wwfy(我舞飞扬):
但是在 java 中,逻辑层和界面层的程序员就不需要知道数据库中的字段信息。在好的 java 开发模式中,数据库中的实体表中的一行就是一个对象,这个对象有很多 getXXX()、setXXX() 方法,业务规则要做的就是对这些对象进行操作。JAVA 中的 EJB 的一个很大的目的就是实现数据层和逻辑、界面层的分离,现在 java 中流行得比较火的 Hibernate 就是专门用于实现业务规则和数据库具体操作的分离。
我觉得这样做相对于 ADO.net 起码有两个好处。比如说有的人对“用户名”这个属性用 "username",而有的人就用"name"或"user"。 用 getXXX 或设置属性的方法可以通过开发工具的上下文提示完成代码,从而不需要记住那么多的容易混淆的属性和字段名字;另外可以把错误检查放在编译时进行,属性的方法写错了编译就通不过,如果是在 ADO.net 中,象DataTable.Rows[i]["UserName"] 和 DataTable.Rows[i]["User"] 都编译通得过,要等到测试运行之后出了异常才知道写错了。
程序员面向的是对象,这才叫面向对象编程Top
14 楼xiaozhimin1978(小灰狼)回复于 2006-07-04 15:49:20 得分 0
To francsescoli(我爱世界杯)
你说的是类型化的 DataSet 吗?
Top
15 楼xiahouwen(武眉博<活靶子.NET>)回复于 2006-07-04 15:55:33 得分 0
我喜欢得到一个实现 IList , ICollection , IEnumerable 接口的类Top
16 楼noood(肥田)回复于 2006-07-07 14:57:38 得分 0
upTop
17 楼sz_lgp(longguoping)回复于 2006-07-07 15:23:30 得分 20
我觉得做项目时先要作一个图(项目结构图)规划数据的进、出、转、存合并等方法和操作的表。不然写程序很乱,经常修改数据库、表和类的方法。Top
18 楼fairan()回复于 2006-07-28 10:17:40 得分 0
看下petshop就明白了.Top
19 楼cm8983(思远)回复于 2006-07-28 10:53:46 得分 0
markTop
20 楼howie(flying fox)回复于 2006-07-28 11:03:31 得分 0
用强类型的DATASET可以避免你说的错误检查的问题Top
21 楼luanwey(大陆响尾蛇)(不做温水里的青蛙王子!))回复于 2006-07-28 11:08:33 得分 0
xiahouwen(武眉博<活靶子.NET>) ( ) 信誉:105 2006-07-04 15:55:00 得分: 0
我喜欢得到一个实现 IList , ICollection , IEnumerable 接口的类
Top
22 楼abandonship(焚酒煮剑)回复于 2006-07-28 11:17:33 得分 0
很好用,lz用法有问题Top
23 楼mustudent(小生--蚕豆;恆久忍耐!)回复于 2006-07-28 11:27:25 得分 0
绑定Top
24 楼truecoffeefox(咖啡狐)回复于 2006-07-28 11:37:28 得分 20
sweet12345(幸福的狗狗) 的方法就可以,也就是自己实现一下java里Hibernate的部分功能。Top
25 楼teacher1998(英语+asp.net+MsSQL)回复于 2006-07-28 11:57:32 得分 0
classTop




