⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accessdb.pas

📁 财务软件:功能尚可,基于UML设计开发的delphi系统,文档齐全
💻 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 + -