createthread 建立线程中使用ado的问题

senven7 2010-08-10 12:19:40
用createthread来建立的线程,里面要用的ado操作。现在有个问题,
线程函数后面加了stdcall。不加这个没法传进去参数,就是一个连接字符串,加了stdcall的话,在ado操作的时候就报错,

在这一句,adoquery.sql.add('')这里,不知道为什么这个只是加一个sql语句的处理都会出错,去掉stdcall就可以,不会出错,以前都是用类操作线程,现在用createthread就出这个问题了。高手请帮帮忙。
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQLDebug_Fan 2010-08-10
  • 打赏
  • 举报
回复
贴出全部代码
SQLDebug_Fan 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 senven7 的回复:]

就在这句会出错aq.SQL.Add('select * from td_load');
[/Quote]
这个和线程无关,你在CreateThread是否有把IsMultiThread置为True?
slmax1 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lovemit 的回复:]
ssss:='kdddddddddddddddddddddddddddddddddd';
这里是这样的吗?
如果是的话,把这里修改为连接数据库的地址,类型,还有用户密码等...
都没连接上数据库在aq.SQL.Add('select * from td_load');这里当然报错了~
只用过一次数据库,不知道说的对不对
[/Quote]


有道理,
Mit1208 2010-08-10
  • 打赏
  • 举报
回复
ssss:='kdddddddddddddddddddddddddddddddddd';
这里是这样的吗?
如果是的话,把这里修改为连接数据库的地址,类型,还有用户密码等...
都没连接上数据库在aq.SQL.Add('select * from td_load');这里当然报错了~
只用过一次数据库,不知道说的对不对
senven7 2010-08-10
  • 打赏
  • 举报
回复
就在这句会出错aq.SQL.Add('select * from td_load');
senven7 2010-08-10
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
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.

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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