查询报 insufficient memory for this operation
delphi + sqlserver
客户端采用sockect连接
每次查询时动态改变所连的服务器及用户,密码
当连接到10个左右时就出现insufficient memory for this operation错误,
查资料上说有打开的数据库没有关闭,可是怎么关闭呢?
改变连接代码如下
//改变数据库连接
procedure ModifyConnection(ADataSet: TDataSet; const AConnectionString: string);
begin
try
ADataSet.Active := false;
ADataSet.Connection.ConnectionString := AConnectionString;
ADataSet.Active := true;
except
raise Exception.Create( '连接错误,请检查网络是否正常! ');
end;
end;
procedure TCWYC.ProOpenAccountBanlance(iDetailed, iYear, iStartPeriod,
iEndPeriod, iLevel,iPosted: Integer;sStartNumber,sEndNumber: String);
begin
DataSetKMYECX.Close;
DataSetKMYECX.Params.ParamByName( '@Detailed ').AsInteger := iDetailed;
DataSetKMYECX.Params.ParamByName( '@Year ').AsInteger := iYear;
DataSetKMYECX.Params.ParamByName( '@StartPeriod ').AsInteger := iStartPeriod;
DataSetKMYECX.Params.ParamByName( '@EndPeriod ').AsInteger := iEndPeriod;
DataSetKMYECX.Params.ParamByName( '@Level ').AsInteger := iLevel;
DataSetKMYECX.Params.ParamByName( '@Posted ').AsInteger := iPosted;
DataSetKMYECX.Params.ParamByName( '@StartNumber ').AsString := sStartNumber;
DataSetKMYECX.Params.ParamByName( '@EndNumber ').AsString := sEndNumber;
PreOpenDB(DataSetKMYECX);
end;
------解决方案--------------------代码没有问题
可以这样
try
PreOpenDB(DataSetKMYECX);
except
raise Exception.Create( '... ');
查看调用PROC的错误
还有,你的过程里是否加了事务,造成表被死锁?
------解决方案--------------------try
ADataSet.Active := true;
except
on e:exception do
showmessage(e.Message);
先看一下报什么错
var
Temp: TObject;
begin
Temp := TObject(释放对象);
Pointer(释放对象) := nil;
Temp.Free;
end;
释放对象方法
------解决方案--------------------bde???
注意
HandleShared = True
和 Session
改用 ado