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

📄 frame_uoradm.~pas

📁 企业信息管理系统程序框架
💻 ~PAS
字号:
unit frame_uOraDM;

interface

uses
  Windows, Messages, ora,SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, frame_uDM;

type
  Tframe_OraDM = class(Tframe_DM)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure doConnect;
    function  ExecuteSQL(Con: TCustomConnection; SQLStr: string): boolean;
  end;

var
  frame_OraDM: Tframe_OraDM;

implementation

{$R *.dfm}
 //------------------------------------------------------------------------------
 // 执行SQL (Qry)
 //------------------------------------------------------------------------------
function Tframe_DM.OpenSQL(Qry: TDataSet; SQLStr: string; Params: array of string): boolean;
var
  i: integer;
  errMess: string;
  oraQry: TOraQuery;
  ADOQry: TADOxQuery;
begin
  Result := False;
  try
    if (Qry is TOraQuery) then
    begin
      oraQry := TOraQuery(Qry);
      oraQry.SQL.Clear;
      oraQry.SQL.Add(SQLStr);


      if oraQry.Params.Count <> High(params) + 1 then
      begin
        errMess := 'ExecuteSQL:参数不足!';
        errorDlg(errMess);
        WriteLog(errMess);
        exit;
      end;
      for i := 0 to oraQry.params.Count - 1 do
      begin
        oraQry.Params[i].Value := params[i];
      end;
      oraQry.open;
    end
    else if (Qry is TADOxQuery) then
    begin
      ADOQry := TADOxQuery(Qry);
      ADOQry.SQL.Clear;
      ADOQry.SQL.Add(SQLStr);


      if ADOQry.Parameters.Count <> High(params) + 1 then
      begin
        errMess := 'ExecuteSQL:参数不足!';
        errorDlg(errMess);
        WriteLog(errMess);
        exit;
      end;
      for i := 0 to ADOQry.Parameters.Count - 1 do
      begin
        ADOQry.Parameters[i].Value := params[i];
      end;
      ADOQry.open;
    end;
  except
    on e: Exception do
    begin
      errMess := '执行SQL错误' + #13 + #10 +
        'SQL:' + SQLStr + #13 + #10 +
        e.message;
      errorDlg(errMess);
      WriteLog(errMess);
    end;
  end;
  if errmess = '' then
  begin
    Result := True
  end;
end;

function Tframe_DM.ExecuteSQL(Qry: TDataSet; SQLStr: string): boolean;
var
  errMess: string;
  OraQry: TOraQuery;
  ADOQry: TADOxQuery;
begin
  Result := False;
  try
    if (Qry is TOraQuery) then
    begin
      OraQry := TOraQuery(Qry);
      OraQry.Close;
      OraQry.SQL.Clear;
      OraQry.SQL.Add(SQLStr);
      OrAQry.ExecSQL;
    end
    else if (Qry is TADOxQuery) then
    begin
      ADOQry := TADOxQuery(Qry);
      ADOQry.Close;
      ADOQry.SQL.Clear;
      ADOQry.SQL.Add(SQLSTR);
      ADOQry.ExecSQL;
    end;
  except
    on e: Exception do
    begin
      errMess := '执行SQL错误' + #13 + #10 +
        'SQL:' + SQLStr + #13 + #10 +
        e.message;
      errorDlg(errMess);
      WriteLog(errMess);
    end;
  end;
  if errmess = '' then
  begin
    Result := True
  end;
end;
 
function Tframe_OraDM.ExecuteSQL(Qry: TDataSet; SQLStr: string; Params: array of string): boolean;
var
  i: integer;
  errMess: string;
  oraQry: TOraQuery;
  ADOQry: TADOxQuery;
begin
  Result := False;
  try
    if (Qry is TOraQuery) then
    begin
      oraQry := TOraQuery(Qry);
      oraQry.SQL.Clear;
      oraQry.SQL.Add(SQLStr);


      if oraQry.Params.Count <> High(params) + 1 then
      begin
        errMess := 'ExecuteSQL:参数不足!';
        errorDlg(errMess);
        WriteLog(errMess);
        exit;
      end;
      for i := 0 to oraQry.params.Count - 1 do
      begin
        oraQry.Params[i].Value := params[i];
      end;
      oraQry.ExecSQL;
    end
    else if (Qry is TADOxQuery) then
    begin
      ADOQry := TADOxQuery(Qry);
      ADOQry.SQL.Clear;
      ADOQry.SQL.Add(SQLStr);


      if ADOQry.Parameters.Count <> High(params) + 1 then
      begin
        errMess := 'ExecuteSQL:参数不足!';
        errorDlg(errMess);
        WriteLog(errMess);
        exit;
      end;
      for i := 0 to ADOQry.Parameters.Count - 1 do
      begin
        ADOQry.Parameters[i].Value := params[i];
      end;
      ADOQry.ExecSQL;
    end;
  except
    on e: Exception do
    begin
      errMess := '执行SQL错误' + #13 + #10 +
        'SQL:' + SQLStr + #13 + #10 +
        e.message;
      errorDlg(errMess);
      WriteLog(errMess);
    end;
  end;
  if errmess = '' then
  begin
    Result := True
  end;
end;
function ExecuteSQL(Qry: TDataSet; SQLStr: string): boolean;
var
  errMess: string;
  OraQry: TOraQuery;
  ADOQry: TADOxQuery;
begin
  Result := False;
  try
    if (Qry is TOraQuery) then
    begin
      OraQry := TOraQuery(Qry);
      OraQry.Close;
      OraQry.SQL.Clear;
      OraQry.SQL.Add(SQLStr);
      OrAQry.ExecSQL;
    end
    else if (Qry is TADOxQuery) then
    begin
      ADOQry := TADOxQuery(Qry);
      ADOQry.Close;
      ADOQry.SQL.Clear;
      ADOQry.SQL.Add(SQLSTR);
      ADOQry.ExecSQL;
    end;
  except
    on e: Exception do
    begin
      errMess := '执行SQL错误' + #13 + #10 +
        'SQL:' + SQLStr + #13 + #10 +
        e.message;
      errorDlg(errMess);
      WriteLog(errMess);
    end;
  end;
  if errmess = '' then
  begin
    Result := True
  end;
end;

{ Tframe_OraDM }
function ExecuteSQL(Con: TCustomConnection; SQLStr: string): boolean;
var
  ADOSQL: TADOxQuery;
  OraSQL: TOraQuery;
  errMess: string;
begin
  Result := False;
  if (Con is TOraSession) then
  begin
    OraSQL := TOraQuery.Create(Application);
    OraSQL.Connection := TOraSession(con);
    OraSQL.SQL.Add(SQLStr);
    try
      OraSQL.ExecSQL;
    except
      on e: Exception do
      begin
        Result := False;
        errMess := '执行SQL错误' + #13 + #10 +
          'SQL:' + SQLStr + #13 + #10 +
          e.message;
        errorDlg(errMess);
        WriteLog(errMess);
      end;
    end;
  end
  else if (Con is TADOConnection) then
  begin
    ADOSQL := TADOxQuery.Create(Application);
    ADOSQL.Connection := TADOConnection(con);
    ADOSQL.SQL.Add(SQLStr);
    try
      ADOSQL.ExecSQL;
    except
      on e: Exception do
      begin
        Result := False;
        errMess := '执行SQL错误' + #13 + #10 +
          'SQL:' + SQLStr + #13 + #10 +
          e.message;
        errorDlg(errMess);
        WriteLog(errMess);
      end;
    end;
  end;

  if errmess = '' then
  begin
    Result := True
  end;
end;

procedure Tframe_OraDM.doConnect;
var
  userID, pwd, server: string;
  OraSession: TOraSession;
  OraQry:  TOraQuery;
  val:     string;
  ConDiag: TConnectDialog;
begin
  userID := UncrypStr(ReadCfg('database', 'userID', ''));
  pwd    := UncrypStr(ReadCfg('database', 'pwd', ''));
  server := UncrypStr(ReadCfg('database', 'server', ''));

  OraSession := TOraSession.Create(Self);
  OraSession.Username := userID;
  OraSession.Password := pwd;
  OraSession.Server := Server;
  OraSession.Options.Net:=true;
  OraQry     := TOraQuery.Create(self);
  OraQry.Connection := OraSession;

  Con := OraSession;
  Qry := OraQry;

  ConDiag := TConnectDialog.Create(Self);
  ConDiag.Caption := 'oracle连接设置';
  ConDiag.UsernameLabel := '用户ID';
  ConDiag.PasswordLabel := '密码';
  ConDiag.ServerLabel := '服务器';
  ConDiag.ConnectButton := '连接';
  ConDiag.CancelButton := '取消';
  ConDiag.Retries := 3;

  OraSession.LoginPrompt := False;
  try
    OraSession.Connect;
  except
    On E: Exception do
    begin
      if QueryDlg(E.message+#13+'是否重新设置数据库连接?', True, '数据库连接错误') then
      begin
        OraSession.LoginPrompt   := True;
        OraSession.ConnectDialog := ConDiag;
        try
          OraSession.Connect;
          begin
            WriteCfg('database', 'userID', EncrypStr(OraSession.Username));
            WriteCfg('database', 'pwd', EncrypStr(OraSession.password));
            WriteCfg('database', 'server', EncrypStr(OraSession.Server));
          end;
        except
          on E: Exception do
          begin
            ShowMessage(e.Message);
            Application.Terminate;
          end;
        end;
      end;
    end;
  end;
  if not OraSession.Connected then
  begin
    Application.Terminate
  end;


end;
initialization
    DMClass:=Tframe_OraDM;
end.

⌨️ 快捷键说明

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