总体数据流动:
不着重讨论三层中数据的流动,单纯分析数据库中的数据是怎么从数据库到UI层展现给用户的,一张图让你明白的“一了百了”:
其中,DataSet可以看做是内存中的数据库,它时不依赖数据库的独立数据集合(即便是断开连接,或者说关闭数据库,DataSet 依然是可用的)。我理解DataTable 是DataSet 的一部分,我们通过sqlhelper(sqlconnection
,sqlcommand,datadaper)连接数据库将数据库中的数据存在DataSet 里(可以提高系统运行效率)。
然后,可以说整个系统的数据传递在这里就可以直接连接到U层直接显示就可以了,但是我们这里没有这么做,WHY?
为什么不能用DataTable?
1:运用DataTable 传递数据,我们必须要了解数据库的整个结构,才能准确无误的调用我们想要找的东西,几百张表下来,,不把脑袋累的罢工。。。?
2:DataTable 调用语句类似于 mrc.count()rows(),容易写错好吧,更可恶的是,你写错了,系统是没办法帮你识别的,后期维护累死手指头。。。
3:说的官方点,这显然不是面向对象的编程思想,让我看到对象好吧?
为什么要用泛型集合?
除了解决了为什么不能用DataTable的问题之外,泛型集合通过将DataSet中的数据一条一条的传递给相应的实体类的属性里,然后放到泛型集合中,这样我们在U层调用数据显示的时候只要知道显示的是什么属性的内容就好了,根本不用管在哪行那列。
以上是本人对于机房收费系统中数据的流动的理解,宏观理解了下,具体细节还在研究中。