📄 accessdb.pas
字号:
unit AccessDB;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs,db,adodb;
type
IAccessDB = interface(IInterface)
procedure BeginTrans; stdcall;
procedure CommitTrans; stdcall;
function ExecuteSQL(vSQL:String): Integer; stdcall;
function GetDataSet(vSQL:String): TDataSet; stdcall;
function GetNewDataSet(vSQL:String): TDataSet; stdcall;
procedure RollbackTrans; stdcall;
end;
TBaseDB = class(TInterfacedObject)
end;
TAccessSQL = class(TBaseDB, IAccessDB)
private
ADataSet: TADODataSet;
Cmd: TADOCommand;
Conn: TADOConnection;
public
constructor Create(vConnectionString:String); overload;
constructor Create(vConn:TADOConnection); overload;
destructor Destroy;
procedure BeginTrans; stdcall;
procedure CommitTrans; stdcall;
function ExecuteSQL(vSQL:String): Integer; stdcall;
function GetDataSet(vSQL:String): TDataSet; stdcall;
function GetNewDataSet(vSQL:String): TDataSet; stdcall;
procedure RollbackTrans; stdcall;
end;
implementation
{
********************************** TAccessSQL **********************************
}
constructor TAccessSQL.Create(vConnectionString:String);
begin
Conn:=TADOConnection.create(nil);
Conn.ConnectionString:=vConnectionString;
Conn.Connected:=true;
Cmd:=TADOCommand.Create(nil);
ADataSet:=TADODataSet.Create(nil);
//设置连接
Cmd.Connection:=Conn;
ADataSet.Connection:=Conn;
end;
constructor TAccessSQL.Create(vConn:TADOConnection);
begin
Conn:=vConn;
//如果没有打开连接,则打开连接
if not Conn.Connected then
try
Conn.Connected:=true;
except
end;
Cmd:=TADOCommand.Create(nil);
ADataSet:=TADODataSet.Create(nil);
//设置连接
Cmd.Connection:=Conn;
ADataSet.Connection:=Conn;
end;
destructor TAccessSQL.Destroy;
begin
//释放对象
//Conn.Free;
Cmd.Free;
ADataSet.Free;
end;
procedure TAccessSQL.BeginTrans;
begin
//开始事务
Conn.BeginTrans;
end;
procedure TAccessSQL.CommitTrans;
begin
//提交事务
Conn.CommitTrans;
end;
function TAccessSQL.ExecuteSQL(vSQL:String): Integer;
begin
//执行命令
with Cmd do
begin
Commandtext:=vSQL;
Execute;
end;
//TODO:返回命令影响的记录数
Result:=0;
end;
function TAccessSQL.GetDataSet(vSQL:String): TDataSet;
begin
//取结果集
with ADataSet do
begin
Close;
Commandtext:=vSQL;
Open;
end;
Result:=ADataSet;
end;
function TAccessSQL.GetNewDataSet(vSQL:String): TDataSet;
begin
//取结果集
Result:=TADODataSet.Create(nil);
with TADODataSet(Result) do
begin
Connection:=Conn;
Close;
Commandtext:=vSQL;
Open;
end;
end;
procedure TAccessSQL.RollbackTrans;
begin
//回滚事务
Conn.RollBackTrans;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -