如何在线程中用TSession、TDatabase、TQuery进行后端数据库的查询?

tramp_man 2002-02-06 11:10:32
我想在线程中进行一个费时的查询,并想用TDatabase进行连接控制,可如何进行TSessioin、TDatabase、TQuery三个组件的设置?
...全文
66 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
invalid 2002-02-07
  • 打赏
  • 举报
回复
上面程序的关键是把Tdatabase和tsession放在了一个Datamodal中。
然后在线程中new出数据模块,不用一个New Tdatabase和
Tsession了。
invalid 2002-02-07
  • 打赏
  • 举报
回复
TDBM * DM=new TDBM(NULL);
static long UniqueNumber;

InterlockedIncrement(&UniqueNumber);

String buf = DM->ATCSession->Name + UniqueNumber;
DM->ATCSession->SessionName = buf;

DM->DatabaseAtc->SessionName = DM->ATCSession->SessionName;
buf = DM->DatabaseAtc->Name + UniqueNumber;
DM->DatabaseAtc->DatabaseName = buf;

DM->DatabaseAtc_plus->SessionName = DM->ATCSession->SessionName;
buf = DM->DatabaseAtc_plus->Name + UniqueNumber;
DM->DatabaseAtc_plus->DatabaseName = buf;

DM->DatabaseAtc1->SessionName = DM->ATCSession->SessionName;
buf = DM->DatabaseAtc1->Name + UniqueNumber;
DM->DatabaseAtc1->DatabaseName = buf;


try{
DM->DatabaseAtc->Connected=true;
DM->DatabaseAtc_plus->Connected=true;
DM->DatabaseAtc1->Connected=true;
}
catch(...){
Message="连接业务数据失败";
Synchronize((TThreadMethod)&AddMessage);
return -1;
}
TR@SOE 2002-02-07
  • 打赏
  • 举报
回复
在线程中使用数据库要注意一些问题:

一、必须有独立的SESSION;
二、DATABASE/DATASOURCE等都需要在线程中动态设置。

详细的讨论可以参见KENT REISLEY的BCB 4技术内幕。
tramp_man 2002-02-07
  • 打赏
  • 举报
回复
难道就没有全部都在线程中完成的办法吗?
tramp_man 2002-02-07
  • 打赏
  • 举报
回复
试下看
yahee 2002-02-07
  • 打赏
  • 举报
回复
你可以象和往常一样设置好DataModule内TSession, TDatabase, TQuery的参数,然后在后台线程中调用。
我一般是先在主线程中打开TDatabase连接的。只要把TDatabase的Login Prompt选项去掉,在Parameter中加入user和password就不会跳出login窗口。

tramp_man 2002-02-06
  • 打赏
  • 举报
回复
我刚是说这样还会跳出login窗口。
tramp_man 2002-02-06
  • 打赏
  • 举报
回复
这样不行,我都试过,如果用TDatabase,如何做?to songhtao
tramp_man 2002-02-06
  • 打赏
  • 举报
回复
在线程中要的,我就是不知对TSessioin、TDatabase、TQuery三者进行相互设置!
我不懂电脑 2002-02-06
  • 打赏
  • 举报
回复
多线程需要TSessioin控制数据库会话TSessioin和TDatabase的作用类似,只要勇其中的一个就可以了,主要是设置TSessioin的Name其他属性默认就可以了,然后把TQuery的SessionName置为TSessioin的Name就可以了。
kill_net 2002-02-06
  • 打赏
  • 举报
回复
好象不需要对TSessioin进行设置
因为他可以自动生成

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧