delphi多线程数据库
‘壹’ DELPHI的程序多线程的数据怎么同步
这个这个够乱的。思路肯定有问题,线程中用回调函数控制,在主线程中处理临界区的问题肯定OK
‘贰’ delphi写的动态链接库,如何使用多线程
procere talkthread.synchAddDataToControl;
是可以当参数传的,
procere talkthread.synchAddDataToControl(ClientSocket:TClientSocket);
‘叁’ DELPHI怎么实现多线程 .....
多线程其实非常简单,DELPHI有多线程的类,你添加即可使用,但是我喜欢自己调用API,方法如下:
定义一个函数或者过程,这个函数就是线程要执行的内容,然后调用API就可以不断创建线程,每个线程都单独的执行那个函数,执行完毕线程就自动关闭,下面是我程序里面的部分代码:
{下面这个就是线程过程,我的线程传递一个参数,建立的SOCKET}
procere
ClientThread(var
sock:TSOCKET);
stdcall;
var
……;
begin
……
end;
{下面是主程序建立服务,等待连接,连接后调用线程进行处理的代码}
repeat
iAddrSize
:=
sizeof(client);
sClient
:=
accept(sListen,
@client,
@iAddrSize);
if
sClient=INVALID_SOCKET
then
begin
SocketErrorMsg(sClient,
'accept()
fail');
break;
end;
writeln('Accepted
client:
',inet_ntoa(client.sin_addr),':',ntohs(client.sin_port),'
sock=',sClient);
hThread
:=
CreateThread(nil,
$1000,
@ClientThread,
@sClient,
0,
dwThreadId);
if
hThread=0
then
begin
writeln('CreateThread()
fail:',GetLastError);
break;
end;
CloseHandle(hThread);
until
false;
‘肆’ delphi怎样使用多线程写入ACCESS数据库
你用两个ADO连接组件,一个连接sql,一个连接ACCESS;然后用两个ADOdataset组件,一个与SQLADO连接组件连接,另外一个与ACCESS的链接组件连接,各自打开要读写的表,然后用一个FOR循环,读写,这和从界面上录入数据然后保存,没有什么两样.
‘伍’ delphi 如何用ADO进行多线程查询数据库
我刚做了一个在线程中使用ado的系统,实现方式如下:使用dm来存放
connection
,在各个线程中create
adoquery控件,connection属性设为dm中的connection,在使用完之后别忘了free。另外别忘了同步。好运!
‘陆’ Delphi中如何多线程操作数据库中的数据表
1。通过线程的互斥来同步操作数据库 2。数据库采用事务处理表中的数据 3。采用共享方式打开数据库,不是以独占方式打开数据库 建立一个mysql连接表加上一个临界区,表结点是这样的(mysqlcon,bool),根据实际情况定大校我用的是10个连接。
‘柒’ delphi 多线程问题。 我用多线程操作VCL控件,(不可视的,idhhtp.adoquery)
没见过idhhtp.adoquery
只知道 idhttp以及 adoquery
一个是网络控件 一个是数据库访问控件
如果每个线程使用的 idhttp以及 adoquery都各不相同(或者idhttp以及 adoquery都是线程内部的对象) 那自然不影响使用。
如果 idhttp以及 adoquery是在线程外定义的,那就不可取。
如果想传参数到线程
比如说 线程类是 TthreadA
TthreadA里 定义参数
public
dd:integer;
那你在主线程里
var
ta:TthreadA;
ta:=TthreadA,create(true);
ta.dd:=1234;
‘捌’ delphi多线程采集数据
线程里面加application.processmessage
‘玖’ delphi 多线程读写数据库
操作数据库之前对表进行lock,操作完后进行解锁。
也可以申请一个互斥变量,每次要操作数据之前申请,结束后释放
前者用的是数据库自己提供的功能,后者是自己控制操作别同时发生。建议用前者。