• ado多线程查询


    类似代码:

    CoInitialize(nil) ; //CoInitialize was not called
     
       Qry := TADOQuery.Create(nil) ;
       try
     // MUST USE OWN CONNECTION
     // Qry.Connection := Form1.ADOConnection1;
         Qry.ConnectionString := ConnStr;
         Qry.CursorLocation := clUseServer;
         Qry.LockType := ltReadOnly;
         Qry.CursorType := ctOpenForwardOnly;
         Qry.SQL.Text := SQLString;
     
         Qry.Open;
         while NOT Qry.Eof and NOT Terminated do
         begin
           ListBox.Items.Insert(0, Format('%s - %d', [Qry.Fields[0].asString,Qry.Fields[1].AsInteger])) ;
     
           //Canvas Does NOT Allow Drawing if not called through Synchronize
           Synchronize(RefreshCount) ;
     
           Qry.Next;
         end;
       finally
         Qry.Free;
       end;
     
       CoUninitialize() ;

    在创建多线程Delphi ADO数据库应用程序时你需要知道如何解决3个陷阱:

       1  使用该dbGo任何对象前必须手动调用CoInitialize,最后调用CoUninitialize。不调用CoInitialize将导致“CoInitialize没被调用”的错误。CoInitialize方法初始化当前线程上的COM库。 ADO是COM。

       2 您不能使用主线程(应用程序)的TADOConnection对象。每个线程需要创建自己的数据库连接。如果使用Tadoquery对象直接连接数据库的话,TADOConnection对象就可以省了,省了许多事。

       3 您必须使用 Synchronize程序与序主线程“交谈”和 访问主表单上的任何控件。

  • 相关阅读:
    jquery animate() stop() finish() 方法使用
    ant 相关命令
    ant 安装 网址
    邮件
    webdriver until
    python HTML报告
    登录
    yun
    centos7搭建smb服务
    爬取图片
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940604.html
Copyright © 2020-2023  润新知