读书人

服务程序中使用数据库对象的有关问题.

发布时间: 2012-03-06 20:47:55 作者: rapoo

服务程序中使用数据库对象的问题..
procedure TfrmTest.a;
var
cn: TOraSession;
qry: TOraQuery;
UserName, Password, IP, SID: string;
begin
//CoInitialize(nil);
showmessage( '1 ');
cn := TOraSession.Create(nil);
showmessage( '2 ');
qry := TOraQuery.Create(nil);
showmessage( '3 ');
UserName := 'report001 ';
Password := 'report001 ';
IP := '59.151.4.116 ';
SID := 'imeter ';
showmessage( '4 ');
cn.ConnectString := Format( '%s/%s@%s:1521:%s ', [UserName, Password, IP, SID]);
showmessage(cn.ConnectString);
//cn.Connected := True;
qry.Session := cn;
showmessage( '7 ');
qry.Close;
qry.SQL.Clear;
showmessage( '8 ');
qry.SQL.Add( 'select * from content02 ');
showmessage( '9 ');
qry.Open;
showmessage( '10 ');
qry.First;
showmessage( '11 ');
showmessage(qry.FieldByName( 'name ').AsString);
cn.Free;
qry.Free;
//CoUnInitialize();
end;

线程函数
procedure TMusic.Execute;
var
sTime: string;
frmTest: TfrmTest;
begin
while True do
begin
frmTest := TfrmTest.Create();
frmTest.a;//这是一个数据库的操作函数

sleep(2000);

end;
end;

我在一个线程对象中调用了一个操作数据库的对象TOraQuery 来操作数据库,操作数据库的那段代码在应用程序中是可以跑通的.但是在服务程序中调它的时候,只有showmessage( '9 '),就是说qry.open的时候就报错了...请问这个问题该如何解决...

[解决办法]
写服务程序用一个log文件来记录运行情况这样比较好,你可以把异常写到日志里,我这里有一个你参考一下吧

unit LogMgr;

interface

uses
Classes, Windows, SysUtils, RegistryMgr;

const
mtErr = '[Error] ';
mtHint = '[Hint] ';
type
TLogMgr = class(TObject)
private
FLogFilePath :String;
public
procedure setLog(aMessageNo:string; aMessage:string);
end;

implementation

{ TLogMgr }

procedure TLogMgr.setLog(aMessageNo: string; aMessage: string);
var
FHandle:THandle;
m_RegMgr :TRegistryManager;
begin
m_RegMgr :=TRegistryManager.Create;
FLogFilePath:=ExtractFilePath( m_RegMgr.sts_Log )+ 'sm.log ';
m_RegMgr.Destroy;
aMessage:= '[ '+FormatDateTime( 'yyyy-mm-dd hh:mm:ss ',now )+ '] '+aMessageNo+ ' : '+aMessage+#10#13;
FHandle:=FileOpen( FLogFilePath, fmOpenWrite or fmShareDenyNone );
FileSeek( Fhandle, 0, 2 );
FileWrite( Fhandle, aMessage[ 1 ], length( aMessage ) );
FileClose( FHandle );
end;

end.

读书人网 >.NET

热点推荐