首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么在线程Execute()中执行数据库的查询、更新操作

2012-02-16 
如何在线程Execute()中执行数据库的查询、更新操作我最多可以调用8个线程,原计划在主窗口中放Query(8个线程

如何在线程Execute()中执行数据库的查询、更新操作
我最多可以调用8个线程,原计划在主窗口中放Query(8个线程分对8个Query)来实现各个串口的访问数据库的。但这样太麻烦,也不大现实。

          请问,该如何在线程的Execute中访问数据库,我在BCB中,一般都用TDataBase来访问数据库的,我的想法为如下:
        TDatabase   *databs;
        databs=new   TDatabase(NULL);
        databs-> DatabaseName= "wzzsk ";
        databs-> DriverName= "ORACLE ";
        databs-> Params-> Add( "SERVER   NAME= "   +servername);
        databs-> Params-> Add( "USER   NAME= "   +username);
        databs-> Params-> Add( "PASSWORD= "   +passw);
        databs-> LoginPrompt=false;
        databs-> Connected=true;

        TQuery   *qry;
        qry=new   TQuery(NULL);
        qry-> DatabaseName= "wzzsk ";

我觉得这种方式应该可行的,不过没有测试过,请问高手们一般在线程中怎么调用数据库的,先谢谢。

[解决办法]
动态创建和麻烦
我觉得若采用8个数据模板和8个线程要来得容易些
如果每次查询不一样的话可通过参数向线程中的Query进行SQL设置
[解决办法]
我是在数据库专用线程中用定时检查的办法,当符合条件时进去执行相应的数据库操作。
[解决办法]
你可以在线程CREAT的时候生成TADOConnection,然后在执行中动态变化QUERY的值
[解决办法]
TADOConnection *myConn;
CoInitialize(NULL); //初始化COM
myConn=new TADOConnection(NULL);
myConn-> ConnectionString= "Provider=MSDAORA.1;Password=aaa;User ID=bbb;Data Source=wzzsk;Persist Security Info=True ";
myConn-> LoginPrompt=false;
myConn-> Connected=true;

TADOQuery *myQry;
myQry=new TADOQuery(NULL);
myQry-> Connection=myConn;

> > 这一块都放在外面

另 注意要安全的终止线程,因为你的 myQry-> Open();操作可能比较耗时间 如果正在执行的话突然终止线程 那就麻烦了.

热点排行