{ADO查询多线程单元}
unit ADOThread;
interface
uses
Classes,StdCtrls,ADODB;
type TADOThread = class(TThread)
private { Private declarations }
FListBox:TListBox;
FLabel:TLabel; ConnString:WideString;
FSQLString:string; sl:TStrings; procedure UpdateCount;
protected procedure Execute; override;
public constructor Create(SQL:string;LB:TListBox;Lab:TLabel);
end; implementation
uses
unit1,SysUtils,ActiveX;
{ TADOThread } constructor TADOThread.Create(SQL: string; LB: TListBox;Lab:TLabel);
begin
ConnString:=Form1.con1.ConnectionString;
FListBox:=LB;
FLabel:=Lab;
FSQLString:=SQL;
Inherited Create(False);
end; procedure TADOThread.Execute;
var
Qry:TADOQuery;
i:Integer;
begin { Place thread code here }
FreeOnTerminate:=True; sl:=TStringList.Create;
CoInitialize(nil); //必须调用(需Uses ActiveX)
Qry:=TADOQuery.Create(nil);
try
Qry.ConnectionString:=ConnString; //必须有自己的连接
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add(FSQLString);
Qry.Open;
FListBox.Clear;
for i := to do //为了执行久点重复历遍数据集101次
begin
Qry.First;
while not Qry.Eof And not Terminated do
begin
//FListBox.AddItem(Qry.Fields[0].asstring,nil);
//FListBox.Items.Add(Qry.Fields[0].asstring);
sl.Add(Qry.Fields[].asstring);
//如果不调用Synchronize,会出现Canvas Does NOT Allow Drawing
//Synchronize(UpdateCount);
Qry.Next;
end;
//Qry.First;
//FListBox.AddItem('*******',nil); //Synchronize(UpdateCount);
end;
Synchronize(UpdateCount);
finally
sl.Free;
Qry.Free;
end;
CoUninitialize;
end; procedure TADOThread.UpdateCount;
begin
//FLabel.Caption:=IntToStr(FListBox.Items.Count);
FListBox.Items.Assign(sl);
FLabel.Caption:=IntToStr(sl.Count);
end; end. unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls; type
TForm1 = class(TForm)
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lst1: TListBox;
lst2: TListBox;
lst3: TListBox;
cbb1: TComboBox;
cbb2: TComboBox;
cbb3: TComboBox;
btn1: TButton;
qry1: TADOQuery;
con1: TADOConnection;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm}
uses ADOThread; procedure TForm1.FormCreate(Sender: TObject);
var
strSQL:string;
begin
strSQL:='select * from tb_student';
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add(strSQL);
qry1.Open;
cbb1.Clear;
cbb2.Clear;
cbb3.Clear; //将客户Company和相关CustNo填到ComboBox中
while not qry1.Eof do
begin
//cbb1.AddItem(qry1.Fields[1].asString, TObject(qry1.Fields[0].AsInteger));
cbb1.Items.Add(qry1.fieldbyname('smc').AsString);
qry1.Next;
end;
cbb2.Items.Assign(cbb1.Items);
cbb3.Items.Assign(cbb1.Items); // 默认选中第一个
cbb1.ItemIndex := ;
cbb2.ItemIndex := ;
cbb3.ItemIndex := ;
end; procedure TForm1.btn1Click(Sender: TObject);
const
SQL_CONST='select sxm from tb_student where sxm';
var c1,c2,c3:Integer; s1,s2,s3:string;
begin //取得三个选择框客户的编码
s1:=SQL_CONST+QuotedStr(cbb1.Text);
s2:=SQL_CONST+QuotedStr(cbb2.Text);
s3:=SQL_CONST+QuotedStr(cbb3.Text);//三个线程同时查询
TADOThread.Create(s1,lst1,lbl1);
TADOThread.Create(s2,lst2,lbl2);
TADOThread.Create(s3,lst3,lbl3);
end; end.

ADO多线程数据库查询的更多相关文章

  1. 【转】Delphi多线程学习(9):多线程数据库查询(ADO)

    原文:http://www.cnblogs.com/djcsch2001/articles/2382559.html ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用 ...

  2. 教程-Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  3. Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  4. 多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  5. ADO多线程数据库总结

    ADO多线程数据库查询通常会出现以下问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  6. ADO.Net 数据库查询

    数据库中的表: VS查询代码: using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  7. android 多线程数据库读写分析与优化

    最新需要给软件做数据库读写方面的优化,之前无论读写,都是用一个 SQLiteOpenHelper.getWriteableDataBase() 来操作数据库,现在需要多线程并发读写,项目用的是2.2的 ...

  8. 转载 50种方法优化SQL Server数据库查询

    原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...

  9. 利用C#实现分布式数据库查询

    随着传统的数据库.计算机网络和数字通信技术的飞速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注.但由于其开发较为复杂,在一定程度上制约了它的发展.基于此,本 ...

随机推荐

  1. CSS样式表——列表与布局

    列表方块:针对<ol></ol>和<ul></ul> 属性style="list-style:none"               ...

  2. 吴裕雄--天生自然java开发常用类库学习笔记:List接口

    import java.util.ArrayList ; import java.util.List ; import java.util.Collection ; public class Arra ...

  3. 中兴获25个5G商用合同

    网易科技讯,6 月 25 日消息,在 2019 年 MWC 上海展期间,中兴通讯宣布随着全球首批 5G 规模商用部署展开,已在全球获得 25 个 5G 商用合同,覆盖中国.欧洲.亚太.中东等主要 5G ...

  4. HDU 5501:The Highest Mark 01背包

    The Highest Mark  Accepts: 71  Submissions: 197  Time Limit: 2000/1000 MS (Java/Others)  Memory Limi ...

  5. Python MySQL Where

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  6. Linux每日一练20200220

  7. HDU - 5591 ZYB's Game(博弈)

    题意:A和B两人在1~N中选数字.已知1<=X<=N,谁先选中X谁就输.每当一个人选出一个不是X的数,裁判都会说明这个数比X大还是小,与此同时,可选范围随之缩小.已知A先选,求满足能让B赢 ...

  8. 洛谷 P1435 回文字串

    题目传送门 解题思路: 就是求一个字符串的最长回文子序列的长度,然后用整个的长度减去最长回文子序列的长度 AC代码: #include<iostream> #include<cstd ...

  9. zabbix_server

    http://www.linuxidc.com/Linux/2014-11/109909.htm [root@localhost zabbix]# service iptables stop  关闭i ...

  10. .NET CORE部署各种问题

    1.安装运行时以后,执行dotnet --version查看版本提示  丢失api-ms-win-crt-runtime-l1-1-0.dll, 当本地api-ms-win-crt-runtime-l ...