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

📄 u_datamodule.pas

📁 给一个企业做的产品展示系统,很好的展示了产品的各种功能
💻 PAS
字号:
unit U_DataModule;

interface

uses
  SysUtils, Classes, DB, ADODB,Forms,Dialogs,Windows;

type
  TDataDM = class(TDataModule)
    adoConn: TADOConnection;
    procedure DataModuleCreate(Sender: TObject);
  private
    procedure ConnectDataBase;
  public
    procedure ExecuteNoResult(const SQLStatement: WideString);
    function ExecuteWithResult(const SQLStatement: WideString): _RecordSet;
    procedure Update(Value: OleVariant);
  end;

var
  DataDM: TDataDM;

implementation

{$R *.dfm}

{ TDataDM }

procedure TDataDM.ConnectDataBase;
var
  ConnStr: String;
  dbPath: String;
begin
  dbPath := ExtractFilePath(Application.ExeName) + 'db\ProductDB.mdb';
  if not FileExists(dbPath) then
  begin
    Application.MessageBox('没有找到指定的数据文件!','错误提示',mb_OK + mb_IconWarning);
    Exit;
  end;
  connStr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source= ' + dbPath + ';Persist Security Info=False';
  adoConn.Connected := False;
  adoConn.ConnectionString := ConnStr;
  adoConn.LoginPrompt := False;
  adoConn.Connected := True;
end;

procedure TDataDM.DataModuleCreate(Sender: TObject);
begin
  ConnectDataBase;
end;

procedure TDataDM.ExecuteNoResult(const SQLStatement: WideString);
var
  rs :TADOQuery;
  i,j :integer;
  errorMsg : String;
begin
  try
    rs :=TADOQuery.Create(nil);
    rs.CommandTimeout := 0;
    rs.cacheSize := 1000;        
    rs.ExecuteOptions := [eoExecuteNoRecords];
    rs.Connection := adoConn;

    rs.SQL.Add(sqlStatement);

    rs.ExecSQL;
    rs.Connection :=nil;
    FreeAndNil(rs);
  except
    on E:Exception do
    begin
        errorMsg := '操作被迫中止!发生了如下的错误:' + char(13)+ char(10);
        for i:= 0  to adoConn.Errors.Count -1 do
        begin
            errorMsg := errorMsg + IntToStr(j + 1) + '、' +
                        adoConn.Errors.Item[j].Description +
                        char(13)+ char(10);
        end;

        if rs <> nil then
        begin
          rs.Connection :=nil;
          FreeAndNil(rs);
        end;

        raise Exception.Create(errorMsg);
    end;
  end;
end;

function TDataDM.ExecuteWithResult(
  const SQLStatement: WideString): _RecordSet;
var
  i,j :integer;
  errorMsg : String; //错误信息
  rs : TADOQuery;
begin
  try
    rs := TADOQuery.Create(nil);
    rs.CommandTimeout := 0;
    rs.CacheSize := 1000;

    rs.LockType := ltBatchOptimistic;
    rs.MarshalOptions := moMarshalModifiedOnly;
    rs.CursorType := ctOpenForwardOnly;
    rs.CursorLocation :=  clUseClient;

    rs.Connection := adoConn;
    rs.SQL.Add(sqlStatement);

    rs.Open;
    result := rs.Recordset;

    rs.Connection :=nil;
    FreeAndNil(rs);
  except
    on E:Exception do
    begin
        errorMsg := '操作被迫中止!发生了如下的错误:' + char(13)+ char(10);
        for j:= 0  to adoConn.Errors.Count -1 do
        begin
            errorMsg := errorMsg + IntToStr(j + 1) + '、' +
                        adoConn.Errors.Item[j].Description +
                        char(13)+ char(10);
        end;
        if rs <> nil then
        begin
          rs.Connection :=nil;
          FreeAndNil(rs);
        end;
        raise Exception.Create(errorMsg);
    end;
  end;
end;

procedure TDataDM.Update(Value: OleVariant);
begin

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -