to falaly:你虽然提供了一个思路,但是还是绕过去的,没有解决问题,举个例子,比如我需要一个数据库备份的工具或者数据库同步的工具,这个数据库的有那些表、表中有那些字段、那些字段是主键都是未知的,而且是不是复合主键也不知道(当然数据库的类型能够判断出来),怎么能用你说的那个ID来选择数据呢?而且,我不可能用打开多个BDE别名的方式,然后直接用Select Into,因为我还需要把这些数据导入到文件或者传输到其他机器上去,wolfop,你是不是天天都在跟业务打交道?没有仔细做过数据库的工具?谁说查询大数据量不可能?SQL Server数据如何Import或者Export出来的?象你那样,一来就认为没必要,你自己试一试做一个数据库数据的Import或者Export工具?要是你认为不一次打开数据查询,你才吃饱了撑的
还是……是垃圾?
与其说DELPHI是垃圾,不如说你是垃圾,任何一门编程语言都有它存在的意义
你用不清楚就不要乱说话,后面的人不要跟贴了,这是一个无用的贴
小弟虽然不会BDE,不过对DBI的API还有一番研究,对单元db.pas也从头到尾仔细研究过,如果你认为自己会BDE,能不能把自己用BDE的心得写一些呀?现在小弟也想请教精通BDE的shangshang(大雪有痕),我有一个问题一直很困惑,TBatchMove控件是调用DBI中的DbiBatchMove来完成工作的,我一直想知道这个API的工作细节,你能帮小弟回答这个问题吗?如果你能回答,请给我回个帖子,把该API的细节告诉我好吗?
如果实在要,我觉得不论BDE还是ADO,甚至将来的DBExpress都不适合进行这样的操作,
应该直接使用嵌入式SQL或者Call Interface,不过恐怕得用BCB或者VC了。
没次只取出一定数量(count)满足你的条件的记录,
而且你怎样移动游标都只显示count条记录的话,
你们就不会在争了! 用set rowcount count(自定义)
其中技巧自己多研究,有疑问跟我联系([email protected])
能不能具体介绍一下你说的方法。
我想我有能力拿你的3xxx,跟我聊聊就行!
给我写信!我解决过这个问题!
而你不处理的话就会有问题!我想这很多人都碰到过!
而且有很多做数据库软件的人都不注意数据库的增长
问题,总是在一个dbgrid中显示表中所有的记录,所以
使用寿命会很短,一定时间后就会很慢!然后死掉!
我的做法是:
1:
set rowcount :showcount // 根据需要自定
select * from TestTable
where id>:firstid // 唯一,有序字段
order by id
set rowcount 0
这样可以保证在dbgrid中永远只显示不大于showcount条记录
2:
把dbgrid的右边框用东东覆盖,加上几个speedbutton分别
起到翻页和回首页及最后页的作用. // 要保证界面有好
3:
做一个存储过程,在你点击翻页或其他移动游表的操作时执行
返回上面SQL语句中的firstid参数. //这是个难点,请多研究
还有一定要保证当用户用键盘上的上下键是的翻页.
要修改吗?为什么不直接用update的SQL语句?要统计吗,为什么不在服务器端通过Store Procedure实现?
此外,不同的数据库有不同的方法限制,比如mysql可以用limit实现,Oracle可以用rownum<...实现,为什么不用。
最后,提醒你,在数据库作备份的时候,你如果象用自己的方式实现,注意脏数据的问题,这也就是为什么很少人自己开发大型数据库的备份工具,而使用数据库自身的工具实现。
以Store Procedure的方法在数据库端实现:如果我跟客户说我的备份工具要更改他的数据库,他不把我宰了才怪,更别说谈钱了
很少人自己开发大型数据库的备份工具,而使用数据库自身的工具实现:很少有人做,难道就表示没有人有能力做吗?我是到CSDN来找高手来解决问题的,不是来争论有没有必要的,如果你自己认为精通数据库,怎么不帮我想想有什么折中的办法没有?在网上吵架,你不累吗?
数据库备份牵涉的在线数据交易是否停止,对表是否要作排它锁定的问题。以你的实现方式,通过高级接口(BDE,ODBC)而不是数据库的专用接口实现数据库备份,结果是必然备份的数据有大量赃数据或者不完整。一Informix为例,如果你不用他的备份功能,简单地
unload to aaa.txt
select * from tablename。如果数据库还处于联机处理情况,很可能导致unload出的数据不完整。很少有人作的原因在进行备份需要牵涉到数据库底层,而很多数据库底层的东西你是不可能知道的。
顺便说一句,Interbase 6.0有Source,你可以考虑通过底层的东西实现,总之想通过高层次的例如ODBC、BDE、ADO是不现实的。
Access,Paradox或者DBF当然好办,这些数据库都是单机数据库,不可能初一长期的联机交易模式,而且表的容量不可能很大,简单地使用全表排他锁定,倒出。
折衷的办法,当然是去好好查Interbase的文档,看看如何限制Select出来结果集合的范围。