读书人

一个设计思路一定要Select * from M

发布时间: 2012-12-31 11:57:52 作者: rapoo

一个设计思路,一定要Select * from MyTable吗?
想起以前做过一个小的管理系统,在数据录入的时候,和好多讲数据库的书上讲的一样,用的ADODataSet组件,在FormCreate的时候(或在构造函数里),将表里的所有记录select出来,然后配合DBEdit组件实现数据的录入/修改等,这样,当表里数据量大到一定程度时,这个Form打开过程会很慢,对于稍大一点的表来说这种方法太不可行了。
后来,我在想,将需要录入的表每个表都加一个日期时间字段,记录录入的时间。然后在录入的Form中也是select * from MyTable,不过加了一个判断条件,就是录入时间在当前时间之后的。这样子,没有意外发生的话,可以保证每次打开Form时,数据集里的记录数都是0,刚开时以为会造成数据集不可更新,但是在Access上小小的做了个试验,好像还行,但总是觉得心里有点虚,因为以前经常在对SQL语句后面带上Where的数据集(例如 select * from MyTable where Age>18 ......)进行操作的时候,总是会遇上“数据集不可更新”的提示。
不知道哪位乡亲有没有什么好方法。
[解决办法]
不一定要读取所有的字段,也不一定要读取所有的记录。按需所取。
表尽量都加上主键。
[解决办法]
主键 及 唯一索引 是需要考的.
不是一堆的集合,更是有的合. 主键 外 索引 是一定要考的 .

“数据集不可更新”的提示主要是以下同方面造成的:
1. 表存在行以上完全相同的行. 解方式是 分析表,按需求,主外及唯一索引.保障每行不一.
2.多用境下,人在你之前修改了(或除了)行. 此需要回最新.然後重新修改.
3.如果表或行被其他用定了,只有等解了才能操作,特是器多的用下更要注意行表.
4.路故障,接被服器.此更新的有常,不好象不是“数据集不可更新”的提示.


[解决办法]
Me:SELECT * TOP 1 FROM MyTable;

读书人网 >C++ Builder

热点推荐