Multi-threaded query database

xiaoxiao2021-03-06  42

Unit querythread

Interface

Uses

Classes, Messages, AdoDB, DB, Sysutils, Dialogs, ActiveX;

Type

Tmythread = Class (TTHREAD)

Private

FQuery: tadoquery; // query

Fconnection: tadoconnection; // connection

FDataSource: TDataSource; Data Perception Component related to Query Components}

Procedure ConnectDataSource; {Connection Data Query Components and Data Perceived Method}

protected

Procedure execute; override;

public

Constructor Create (SUSPENDED: Boolean; Query: TadoQuery; DS: TDataSource);

Thread constructor}

DESTRUCTOR DESTROY; OVERRIDE;

END;

IMPLEMENTATION

Procedure Tmythread.ConnectDataSource; {Connection Data Query Components and Data Perceived Methods

Begin

FDataSource.DataSet: = FQuery;

END;

Constructor Tmythread.create (SUSPENDED: Boolean; Query: TadoQuery; DS: tdataser);

Begin

Coinitialize (nil); // this is

Needle in thread

Try

Fconnection: = tadoconnection.create (nil);

FQUERY: = query;

FDataSource: = DS;

FQuery.Connection: = fConnection;

With fconnection do

Begin

LoginPrompt: = false;

KeepConnection: = TRUE;

Connectionstring: = 'provider = msdasql.1; persist security info = false; data source = honesty';

END;

Inherited CREATE (SUSPENDED);

Except

ON E: Exception DO

Begin

SHOWMESSAGE ('creation

Error when thread! Error is: ' E.MESSAGE);

END;

END;

END;

DEStructor Tmythread.Destroy;

Begin

Fconnection.Free; // Release

Couninitialize;

Inherited destroy;

END;

Procedure Tmythread.execute;

Begin

Try

FreeOnterminate: = true;

FQuery.Open; {Open Query}

Synchronize (connectDataSource); {

Thread synchronization}

Except

ShowMessage ('

Thread exception! '); {

Thread abnormal}

END;

END;

End.

转载请注明原文地址:https://www.9cbs.com/read-54769.html

New Post(0)