|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2003/11/24 17:30:43 |
标题: |
请教关点DELPHI+ADO起动速度慢的解决方法??? |
浏览:2351 |
|
加入我的收藏 |
楼主: |
我编了一个程序,但其起动时先连接SQL数据库,所以起动十分慢,请教各个高手,
有没办法可先让界面先起动后,再连接数据库呢????在线等!
----------------------------------------------
- |
作者: |
|
2003/11/24 17:32:14 |
1楼: |
我编了一个程序,但其起动时先连接SQL数据库,所以起动十分慢,请教各个高手,
有没办法可先让界面先起动后,再连接数据库呢????在等!
----------------------------------------------
-
|
作者: |
|
2003/11/24 18:25:15 |
2楼: |
做成线程啊.连接数据库的操作放在线程里做.
----------------------------------------------
-
|
作者: |
|
2003/11/25 7:51:57 |
3楼: |
可以,ADO连接时你可以选择异步连接方式,也就是你所说的先启动画面然后连接,连接完后有一事件叫:OnAfterConnect可以通知你已经和数据库连接!
----------------------------------------------
-
|
作者: |
|
2003/11/25 8:04:37 |
4楼: |
3楼的兄弟可否说的再具体一此,我是初学都 ,有实例更好???
----------------------------------------------
-
|
作者: |
|
2003/11/25 8:20:57 |
5楼: |
放一ApplicationEvents 组件(不放也可)
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin
//在这里定数据连接代码 end;
这样就保证程序界面启动完毕无事可做时 再连接数据据
当然在哪里应该保证已连接数据库就不再干傻事了
----------------------------------------------
|
作者: |
|
2003/11/25 9:03:00 |
6楼: |
5楼的兄弟,这个组件在哪儿能找到呀?
----------------------------------------------
-
|
作者: |
|
2003/11/25 9:11:06 |
7楼: |
5楼的兄弟我找到这个组件了,谢谢你!
但是在编译的时候出现非法操作???
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin datamodule1.ADOConnection1.Connected:=true; end;
不知道是哪儿出错了,现想向你请教一二???
----------------------------------------------
-
|
作者: |
|
2003/11/25 12:26:19 |
8楼: |
建议楼主做这么个试验再看使用这个方法有意义不: i:=0;
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin edit1.Text := inttostr(i); i:=i+1; end;
OnIdle的意思是在程序空闲时触发,如果程序一空闲就来触发连接你的数据库是不是太多余了一点呢?而且如果某个时候你想断开数据库连接,那这个事件是不会让你那么轻松就搞定的。
----------------------------------------------
-
|
作者: |
|
2003/11/25 14:06:35 |
9楼: |
那楼上的兄弟如何能实现DELPHI+ADO起动速度慢的解决方法????
----------------------------------------------
-
|
作者: |
|
2003/11/25 15:16:42 |
10楼: |
1.可以通过指定全局变量来记录有无联连成功
2.动态使用 OnCreate: Application.OnIdle := MyProcedure;
procedure TForm1.MyProcedure(Sender: TObject;var Done: Boolean); begin //Connection DataBase........
Application.OnIdle := nil; //再也不玩了 end;
----------------------------------------------
|
作者: |
|
2003/11/25 15:41:56 |
11楼: |
楼上的诸们史弟们,是这样子的呀?
小弟有一个程序其中主界面没有用到ADO控件,但是每次起动主界面时都先去链接数
据库,所以每次起动时主界面都是等链接上数据库后才能起动起来,所以我想请教
一种方法,能否先起动不连接SQL的主程序界面后,显示完主界面后才连接数据库。
用什么方法可以做到,具体步骤最好!
----------------------------------------------
-
|
作者: |
|
2003/11/25 16:18:21 |
12楼: |
可以先连接数据库,在程序启动之后在需要数据的时候在去active或open adotable,应该速度不会很慢吧,不知道是不是这样。
----------------------------------------------
delphi盒子好
|
作者: |
|
2003/11/25 17:13:48 |
13楼: |
主界面启动完成
就是 OnIdel !!!!
----------------------------------------------
|
|