用createthread来建立的线程,里面要用的ado操作。现在有个问题,
线程函数后面加了stdcall。不加这个没法传进去参数,就是一个连接字符串,加了stdcall的话,在ado操作的时候就报错,在这一句,adoquery.sql.add('')这里,不知道为什么这个只是加一个sql语句的处理都会出错,去掉stdcall就可以,不会出错,以前都是用类操作线程,现在用createthread就出这个问题了。高手请帮帮忙。
线程函数后面加了stdcall。不加这个没法传进去参数,就是一个连接字符串,加了stdcall的话,在ado操作的时候就报错,在这一句,adoquery.sql.add('')这里,不知道为什么这个只是加一个sql语句的处理都会出错,去掉stdcall就可以,不会出错,以前都是用类操作线程,现在用createthread就出这个问题了。高手请帮帮忙。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ADODB,ActiveX, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Tpp = ^string;
var
Form1: TForm1;
ssss:string;
implementation{$R *.dfm}
function get(pp:Tpp):Boolean;stdcall;
var aq:TADOQuery;
begin
CoInitialize(nil);
aq:=TADOQuery.Create(nil);
aq.ConnectionString:=pp^;
aq.SQL.Add('select * from td_load');
aq.Open; aq.Free;
CoUninitialize
end;
procedure TForm1.Button1Click(Sender: TObject);
var id:DWORD;
begin
ssss:='kdddddddddddddddddddddddddddddddddd';
CreateThread(nil,0,@Get,@ssss,0,id);
end;end.
这里是这样的吗?
如果是的话,把这里修改为连接数据库的地址,类型,还有用户密码等...
都没连接上数据库在aq.SQL.Add('select * from td_load');这里当然报错了~
只用过一次数据库,不知道说的对不对