如题,如何在Delphi中用adoquery操作的数据,把记录保存在数据庫中呢,如新增,修改,删除,我是新来的,请大家帮帮忙!!!

解决方案 »

  1.   

    看一下这个吧,希望对你有帮助.unit LogWriter;interface
    uses
        Messages, classes, SysUtils, Windows, Dialogs,adodb,db,IniFiles,Forms,LockPwd,CommDeclare;const
        FILENAME = 'Logger';
    type
        TLogLevel = (
            LEVEL_OFF,
        LEVEL_SEVERE,
        LEVEL_WARNING,
        LEVEL_INFO,
        LEVEL_CONFIG,
        LEVEL_FINE,
        LEVEL_FINER,
        LEVEL_FINEST
        );     TLogWriter = Class
        private
        m_csLogFileSync : TRTLCriticalSection;
        m_strLogFileName : string;
            con:tadoconnection;
            qry:tadoquery;
            ini:Tinifile;
            function GetLevelNames(level : TLogLevel) : string;
        public
            constructor Create;
            destructor Destroy; override;
        procedure Log(level :TLogLevel ;ModuleID:integer; qry1:tadoquery);
        procedure RemoveLastMonthFile();
        procedure SetLogFileName(strLogFileName : string);
        end;
        function GetLogger() : TLogWriter;
        procedure FINEST_LOG (ModuleID : integer;qry1:tadoquery);
        procedure FINER_LOG  (ModuleID : integer;qry1:tadoquery);
        procedure CONFIG_LOG (ModuleID : integer;qry1:tadoquery);
        procedure INFO_LOG   (ModuleID : integer;qry1:tadoquery);
        procedure WARNING_LOG(ModuleID : integer;qry1:tadoquery);
        procedure SEVERE_LOG (ModuleID : integer;qry1:tadoquery);implementation
    var
        m_Logger : TLogWriter ;{ TLogWriter }constructor TLogWriter.Create;
    begin
        InitializeCriticalSection(m_csLogFileSync);
        m_strLogFileName := FILENAME;
        ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'Setup.ini');
        con:=tadoconnection.Create(nil);
        con.LoginPrompt:=false;con.ConnectionString:=
       'Provider=SQLOLEDB.1;Password='+ Dec(ini.ReadString('Setup','Password',''))+
       ';Persist Security Info=True;User ID='+ini.ReadString('Setup','UserName','')+
       ';Initial Catalog='+ini.ReadString('Setup','DataBaseName','')+
       ';Data Source='+ini.ReadString('Setup','ServerName','');
       qry:=tadoquery.Create(nil);qry.Connection:=con;
    end;destructor TLogWriter.Destroy;
    begin
        DeleteCriticalSection(m_csLogFileSync);
        con.Free;qry.Free;ini.Free;
        inherited Destroy;
    end;function TLogWriter.GetLevelNames(level: TLogLevel): string;
    begin
        Result := '';
        case level of
        LEVEL_OFF     : Result := '[OFF]    ';
        LEVEL_SEVERE  : Result := '[SEVERE] ';
        LEVEL_WARNING : Result := '[WARNING]';
        LEVEL_INFO    : Result := '[INFO]   ';
        LEVEL_CONFIG  : Result := '[CONFIG] ';
        LEVEL_FINE    : Result := '[FINE]   ';
        LEVEL_FINER   : Result := '[FINER]  ';
        LEVEL_FINEST  : Result := '[FINEST] ';
        end;
    end;procedure TLogWriter.Log(level: TLogLevel;ModuleID:integer;qry1:tadoquery);
    var
        strMessage : string;
        strFileName : string;
        hFile : THandle;
        systime : _SYSTEMTIME;
        dwNumBytesWritten : DWORD;
        LogFile : TextFile;
        info:string;
        i:integer;
    begin
        if (level > LEVEL_FINEST) then exit;   EnterCriticalSection(m_csLogFileSync);
        strFileName := m_strLogFileName + FormatDateTime('yyyymmdd',Now) + '.txt';    if   ModuleID<=100 then
        begin
          info:=''; if ModuleID=0 then info:='KYE MES System Login' else  info:='KYE MES System LoginOut';
        try
        qry.Close; qry.SQL.Clear;
        qry.SQL.add('insert into LOG_INFO(ACCOUNT_ID,MODULEID,OPERATION)values('
        +''''+_userName+''''+','+''''+inttostr(ModuleID)+''''+','+''''+info+''''+')');
        qry.ExecSQL ;
        except  
        end ;
        end
        else
        begin
             if  qry1.State in[dsInsert,dsEdit] then
             begin
                  info:='';if qry1.State=dsInsert then info:='Insert: ' else info:='Edit: ';
                  for i:=0 to  qry1.FieldCount-1 do
                  begin
                    info:=info+qry1.Fields[i].FieldName+':'+qry1.Fields[i].AsString+';';
                  end;
                  qry.Close; qry.SQL.Clear;
                  qry.SQL.add('insert into LOG_INFO(ACCOUNT_ID,MODULEID,OPERATION)values('
                  +''''+_userName+''''+','+''''+inttostr( ModuleID)+''''+','+''''+info+''''+')');
                  qry.ExecSQL ;
             end
             else
             begin
                  info:='';info:='Delete: ';
                  for i:=0 to  qry1.FieldCount-1 do
                  begin
                    info:=info+qry1.Fields[i].FieldName+':'+qry1.Fields[i].AsString+';';
                  end;
                  qry.Close; qry.SQL.Clear;
                  qry.SQL.add('insert into LOG_INFO(ACCOUNT_ID,MODULEID,OPERATION)values('
                  +''''+_userName+''''+','+''''+inttostr( ModuleID)+''''+','+''''+info+''''+')');
                  qry.ExecSQL ;
             end
        end;
        dwNumBytesWritten := 0;
      RemoveLastMonthFile();
      LeaveCriticalSection(m_csLogFileSync);
    end;procedure TLogWriter.RemoveLastMonthFile;
    beginend;
    procedure TLogWriter.SetLogFileName(strLogFileName: string);
    begin
      EnterCriticalSection(m_csLogFileSync);    m_strLogFileName := strLogFileName;   LeaveCriticalSection(m_csLogFileSync);
    end;
    function GetLogger() : TLogWriter;
    begin
        result := TLogWriter.Create;
    end;
    procedure FINEST_LOG(ModuleID : integer;qry1:tadoquery);
    begin
        GetLogger.Log(LEVEL_FINEST,ModuleID, qry1);
    end;
    procedure FINER_LOG(ModuleID : integer;qry1:tadoquery);
    begin
       GetLogger.Log(LEVEL_FINER, ModuleID,qry1);
    end;
    procedure CONFIG_LOG(ModuleID : integer;qry1:tadoquery);
    begin
       GetLogger.Log(LEVEL_CONFIG,ModuleID, qry1);
    end;
    procedure INFO_LOG(ModuleID : integer;qry1:tadoquery);
    begin
       GetLogger.Log(LEVEL_INFO,ModuleID, qry1);
    end;
    procedure WARNING_LOG(ModuleID : integer;qry1:tadoquery);
    begin
       GetLogger.Log(LEVEL_WARNING,ModuleID, qry1);
    end;
    procedure SEVERE_LOG(ModuleID : integer;qry1:tadoquery);
    begin
       GetLogger.Log(LEVEL_SEVERE,ModuleID, qry1);
    end;
    end.
      

  2.   

    我试了一下,好像还差两个文件.
    LockPwd,CommDeclare有什么用吗?是不是只是联接数据库用到的?