📄 u_datamodule.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 + -