C
cocochuong
Unregistered / Unconfirmed
GUEST, unregistred user!
我自己写了一个访问数据库的类,由于是在线程中执行,所以根据BDE的要求,每
个线程中访问数据库时必须用一个唯一的Session。
可这样就出现了一个问题,这个类在我的win2000上最多只能存在12个实例,多于
12个时就会出现:Insufficient memory for this operation.这个错误。逐步跟
踪错误来源,发现是第13次执行Fdatabase.connected:=true时出现这个错误,此
时应该是BDE的内存不够而引起的,请问有什么办法解决呢?能不能扩大BDE 使用
的内存或者有什么其它的办法呢?
后来我换了一台机器再试,发现该类实例多于8个时就出现同样错误,可该机器是
192M内存的呀。
类为:Tthquery
成员:
FSession:TSession;
FDatabase:TDatabase;
qry1,qry2,qry3:TQuery;
Prepared:Boolean;
constructor Create;
destructor Destroy;override;
procedure Free;
构造函数:
FSession:=TSession.Create(nil);
FDatabase:=TDatabase.Create(nil);
qry1:=TQuery.Create(nil);
qry2:=TQuery.Create(nil);
qry3:=TQuery.Create(nil);
FSession.AutoSessionName :=true;
with FDatabasedo
begin
FSession.Open;
Connected:=false;
Params.Clear;
LoginPrompt:=false;
SessionName:=FSession.SessionName ;
DatabaseName:=FSession.SessionName ;
DriverName:=glDriverName;
Params.Values['SERVER NAME']:=glServerName;
Params.Values['DATABASE NAME']:=glDbName;
Params.Values['USER NAME']:=glUserName;
Params.Values['PASSWORD']:=glPassword;
Connected:=true;
qry1.SessionName:=FSession.SessionName;
qry1.DatabaseName:=FDatabase.DatabaseName;
qry2.SessionName:=FSession.SessionName;
qry2.DatabaseName:=FDatabase.DatabaseName;
qry3.SessionName:=FSession.SessionName;
qry3.DatabaseName:=FDatabase.DatabaseName;
Prepared:=true;
end;
个线程中访问数据库时必须用一个唯一的Session。
可这样就出现了一个问题,这个类在我的win2000上最多只能存在12个实例,多于
12个时就会出现:Insufficient memory for this operation.这个错误。逐步跟
踪错误来源,发现是第13次执行Fdatabase.connected:=true时出现这个错误,此
时应该是BDE的内存不够而引起的,请问有什么办法解决呢?能不能扩大BDE 使用
的内存或者有什么其它的办法呢?
后来我换了一台机器再试,发现该类实例多于8个时就出现同样错误,可该机器是
192M内存的呀。
类为:Tthquery
成员:
FSession:TSession;
FDatabase:TDatabase;
qry1,qry2,qry3:TQuery;
Prepared:Boolean;
constructor Create;
destructor Destroy;override;
procedure Free;
构造函数:
FSession:=TSession.Create(nil);
FDatabase:=TDatabase.Create(nil);
qry1:=TQuery.Create(nil);
qry2:=TQuery.Create(nil);
qry3:=TQuery.Create(nil);
FSession.AutoSessionName :=true;
with FDatabasedo
begin
FSession.Open;
Connected:=false;
Params.Clear;
LoginPrompt:=false;
SessionName:=FSession.SessionName ;
DatabaseName:=FSession.SessionName ;
DriverName:=glDriverName;
Params.Values['SERVER NAME']:=glServerName;
Params.Values['DATABASE NAME']:=glDbName;
Params.Values['USER NAME']:=glUserName;
Params.Values['PASSWORD']:=glPassword;
Connected:=true;
qry1.SessionName:=FSession.SessionName;
qry1.DatabaseName:=FDatabase.DatabaseName;
qry2.SessionName:=FSession.SessionName;
qry2.DatabaseName:=FDatabase.DatabaseName;
qry3.SessionName:=FSession.SessionName;
qry3.DatabaseName:=FDatabase.DatabaseName;
Prepared:=true;
end;