如何实现操作数据库保存记录??? 如题,如何在Delphi中用adoquery操作的数据,把记录保存在数据庫中呢,如新增,修改,删除,我是新来的,请大家帮帮忙!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看一下这个吧,希望对你有帮助.unit LogWriter;interfaceuses 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);implementationvar 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. 我试了一下,好像还差两个文件.LockPwd,CommDeclare有什么用吗?是不是只是联接数据库用到的? delphi中,如何将位图90°旋转? dbase+delphi application.onidle事件 dll调用问题 在vc中是一个有指针的16个字节的char数组如何把转换成相对应的delphi 请问如何向已有程序发送数据? 快捷键的问题? !!!!五道口的盗版基地被查,我不知道该怎么办? delphi写的dll为什么c无法调用? 再请教高手一个问题 想读一个excle表,把其中的一个区域放到memo里,这个怎么实现呢?急! 菜鸟问题(在线等)谢谢
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.
LockPwd,CommDeclare有什么用吗?是不是只是联接数据库用到的?