DELPHI 数据库连接类
做的时候目地是可以通过类的创建和释放进行数据库的短连接,在做服务端的时候每一个请求都通过类生成一个数据连接
unit UnDm; interface uses SysUtils, Classes, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, Menus, StdCtrls, ADODB, DB,inifiles; type TRecordResult = (RRError, RRZero, RROK); TDataStatus = (DsSel, DsEdit, DsAdd); type TDataConnection = class DataAdoConn: TADOConnection; qryTemp1: TADOQuery; qryTemp2: TADOQuery; qryTemp3: TADOQuery; qryTemp4: TADOQuery; private public constructor Create; overload; //连接数据库 function DbConn: Boolean; //启动事物 function AdoBeginTrans: Boolean; //回滚事物 function AdoRollbackTrans: Boolean; //提交事物 function AdoCommitTrans: Boolean; // Function GetOpenQuery(const sSql, sTitle: String; _AdoQry: TADOQuery; Is_View: Boolean = True): TRecordResult; overload; function UpdateSql(const sSql, sTitle: String; IsView: Boolean= True): TRecordResult; function GetAllUser: Integer; end; implementation uses Querypa; constructor TDataConnection.Create; var I:Integer; begin inherited; DataAdoConn:=TADOConnection.Create(nil); qryTemp1:=TADOQuery.Create(nil); qryTemp2:=TADOQuery.Create(nil); qryTemp3:=TADOQuery.Create(nil); qryTemp4:=TADOQuery.Create(nil); DataAdoConn.LoginPrompt:=False; qryTemp1.Connection:=DataAdoConn; qryTemp2.Connection:=DataAdoConn; qryTemp3.Connection:=DataAdoConn; qryTemp4.Connection:=DataAdoConn; end; function TDataConnection.DbConn: Boolean; const //sDbConn = ‘Provider=OraOLEDB.Oracle.1;Password=%s;Persist Security Info=True;User ID=%s;Data Source=%s‘; sDbConn = ‘Provider=OraOLEDB.Oracle.1;Password=%s;User ID=%s;Data Source=%s;Persist Security Info=True‘; var sUdlFile: String; ServerIni:TiniFile; SOURCE,USER,PASSWORD:string; sSql:string; begin //获得数据库连接串 ServerIni := TIniFile.Create(ExtractFilePath(Application.ExeName) ‘ServerInfor.Ini‘); SOURCE := ServerIni.ReadString(‘HIS‘, ‘SOURCE‘, ‘0‘); USER := ServerIni.ReadString(‘HIS‘, ‘USER‘, ‘0‘); PASSWORD := ServerIni.ReadString(‘HIS‘, ‘PASSWORD‘, ‘0‘); sSql := Format(sDbConn, [PASSWORD, USER, SOURCE]); Result := False; if DataAdoConn.Connected then DataAdoConn.Close; //连接数据库 DataAdoConn.ConnectionString :=sSql; //‘FILE NAME=‘ sUdlFile; Try DataAdoConn.Open; if not DataAdoConn.Connected then begin Result :=false; Exit; end else begin Result :=true; end; Except Result := False; Exit; end; end; function TDataConnection.AdoBeginTrans: Boolean; Var nResult: Integer; begin Result := False; Try nResult := DataAdoConn.BeginTrans; if nResult > 0 then Result := True; except On E: Exception do Begin SaveError(‘启动事务‘, E.Message); end; end; end; function TDataConnection.AdoCommitTrans: Boolean; Var nResult: Integer; begin Result := False; Try DataAdoConn.CommitTrans; Result := True; except On E: Exception do Begin SaveError(‘提交事务‘, E.Message); end; end; end; function TDataConnection.AdoRollbackTrans: Boolean; Var nResult: Integer; begin Result := False; Try DataAdoConn.RollbackTrans; Result:True; except On E: Exception do Begin SaveError(‘回滚事务‘, E.Message); end; end; end; /// <summary> /// 更新数据库涵数 插入或修改 /// sSql SQL语句 /// sTitle执行标题 /// IsView出错后是否弹出消息 /// </summary> function TDataConnection.UpdateSql(const sSql, sTitle: String; IsView: Boolean): TRecordResult; Var nResult: Integer; AdoQry:TADOQuery; begin AdoQry:=TADOQuery.Create(nil); AdoQry.Connection:= DataAdoConn; Result := RRError; With AdoQry do Begin Close; SQL.Text := sSql; Try nResult := ExecSQL; if nResult = 0 then Result := RRZero else Result := RROK; Except on E: Exception do Begin SaveError(sTitle, sSql #10#13 E.Message); MsgShow(E.Message, 3); Exit; end; end; end; if Result = RRZero then Begin SaveError(sTitle, sSql #10#13 ‘执行没有返回正确结果!‘); if IsView then MsgShow(‘执行没有返回正确结果!‘, 0); Exit; end; end; /// <summary> /// 查询数据库语句 /// sSql SQL语句 /// sTitle执行标题 /// _AdoQry Adoquery控件 /// IsView出错后是否弹出消息 /// </summary> function TDataConnection.GetOpenQuery(const sSql, sTitle: String; _AdoQry: TADOQuery; Is_View: Boolean): TRecordResult; begin Result := RRError; With _AdoQry do Begin Close; SQL.Text := sSql; Try Open; if IsEmpty then Result := RRZero; if Not IsEmpty then Result := RROK; Except on E: Exception do Begin SaveError(sTitle, sSql #10#13 E.Message); MsgShow(E.Message, 3); Exit; end; end; end; if (Result = RRZero) and Is_View then Begin SaveError(sTitle, sSql #10#13 sTitle); MsgShow(sTitle, 3); end; end; function TDataConnection.GetAllUser: Integer; begin with qryTemp1 do begin Close; SQL.Text := ‘SELECT USERID, name From T_USERS‘; Open; end; Result := qryTemp1.RecordCount; end; end. ————————————————
声明
var dm: TDataConnection;
创建
//首选连接服务器数据库 dm:=TDataConnection.Create; if not dm.DbConn then begin MsgShow(‘服务器数据库连接失败,无法启动服务‘,1); dm.Free; Exit; end;
执行SQL语句
strSQL:=‘ UPDATE A SET AA=‘‘1‘‘‘; DM.UpdateSql(strSQL,‘更新数据库‘,false);
查询数据库
strSQL:=‘ SELECT * FROM A‘; DM.GetOpenQuery(strSQL,‘更新数据库‘,ADOQUERY1,false);