程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> Access數據庫入門 >> 使用ADO,多線程訪問ACCESS數據庫的開發

使用ADO,多線程訪問ACCESS數據庫的開發

編輯:Access數據庫入門

本人最近正在進行呼叫中心的座席端和服務器軟件開發,座席端登錄部分是進行提取主機信息,然後使用SOCKET提交給遠程服務器,服務器再在後台數據庫中進行查找信息,進行對比,看是否允許座席端主機登錄,因為我的電腦中無法安裝SQLSERVER,所以 ,

後台數據庫暫時使用access小型數據庫進行代替,到後期可以改為SQLSERVER數據庫,,我在後台數據庫中使用了兩個表,使用WORKMARK字段將其相關聯,如果在第一個表中查找到信息以後馬上會進入第二個表中進行查找,如果第一個表中的信息符合,就返回個客戶第二個表中的信息,因為座席端主機有200多台,為了防止幾台主機同時進行驗證信息,引起沖突,我在服務器端建立多線程,利用線程進行後台的查詢,以及查找結果的回傳,編寫成功後進行測試,發現當一個主機連接後可以測試成功,但是,當第二個或者以後的線程產生時,數據集在第一個表中可以查到正確的信息,但是進入第二個表中時,會發現按照正確的查找條件進行查找時,查到的信息都為NIL,而且經過跟蹤,發現,其實ADO已經找到了正確的信息,而且已經發送成功了,但是卻無法接收到,當時我在論壇中發表了一個帖子尋求幫助,原貼內容:http://expert.csdn.net/Expert/topic/1420/1420051.xml?temp=.3060114

有些朋友說可能ACCESS數據庫不提供多線程訪問,但是我聽說很多的論壇中好像都使用了ACCESS進行後台線程的查找的。翻看MSDN中關於COM的說明:發現我的線程中竟然缺少最重要的兩個函數過程

CoInitialize( nil );凡是訪問com對象都應該使用。線程的關閉時應該使用CoUnInitialize;否則ADO肯定出錯,我相信肯定有不少的朋友經歷過這種問題的:

我的線程代碼如下:

unit Unitquerythread;

interface

uses
  windows,SysUtils,Classes, Dialogs,ADODB,db, NMMSG, ActiveX{必須要有};

type
  QueryThread = class(TThread)
  private
   FComputerInfor,FIPaddressinfo: string;  //傳遞的信息
   FAdoQuery,FAdoQUserInfor:TadoQuery;  //動態生成的表一,表2
  
   Fadoconnection:Tadoconnection;  //動態生成的連接
   Fnmmsg,FNMretureMSG:TNMMSG;//用來發送返回信息的組件
filestream:tfilestream;
    procedure ExtractInfor(TransInfo:string{自定義的從該提交信息中分離信息的過程});
    procedure ShellexeQuery;
  Destructor Destroy;

  protected
    procedure Execute; override;
  public
constructor  create(ComputerInfor:string;{傳輸來的計算機信息}IPaddressinfo:string{傳輸來的IP地址信息};nmmsg,NMretureMSG:TNMMSG);
  end;
var
  ExtractDomainUser:string;  //提取出來的域用戶名
  ExtractComputername:string;//提取出來的計算機名稱
  ExtractDomainname:string;//提取出來的域名
  strlist:Tstringlist;
  IPlist:Tstringlist;//保存查找到的本工作組的ip地址信息
  const defeat='defeat';  //驗證失敗,必須注銷客戶機,在數據庫中重新進行寫入

implementation

  uses Unitsendthread;

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一頁
  • 尾頁
  • 共5頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved