我是这样写的,能否有什么改进呢?感觉挺慢的:
另外,TADOStoredProc.Create(self);会不会效率比较低,我其实用到了递归,所以create次数比较多var
spTmp:TADOStoredProc;
tnTmp:TTreeNode;
begin
spTmp:=TADOStoredProc.Create(self);
spTmp.Connection:=connThis; spTmp.Prepared:=true; spTmp.ProcedureName:='SP1';
spTmp.Parameters.Refresh;
spTmp.Parameters.ParamByName('@A).Value:=strA;
spTmp.Open;
spTmp.ExecProc;
spTmp.First;
while not spTmp.Eof do
begin
end; // while
spTmp.Close; spTmp.ProcedureName:='SP2';
spTmp.Parameters.Refresh;
spTmp.Parameters.ParamByName('@A).Value:=strA;
spTmp.Open;
spTmp.ExecProc;
spTmp.First;
while not spTmp.Eof do
begin
end; // while
spTmp.Close; spTmp.free;
另外,TADOStoredProc.Create(self);会不会效率比较低,我其实用到了递归,所以create次数比较多var
spTmp:TADOStoredProc;
tnTmp:TTreeNode;
begin
spTmp:=TADOStoredProc.Create(self);
spTmp.Connection:=connThis; spTmp.Prepared:=true; spTmp.ProcedureName:='SP1';
spTmp.Parameters.Refresh;
spTmp.Parameters.ParamByName('@A).Value:=strA;
spTmp.Open;
spTmp.ExecProc;
spTmp.First;
while not spTmp.Eof do
begin
end; // while
spTmp.Close; spTmp.ProcedureName:='SP2';
spTmp.Parameters.Refresh;
spTmp.Parameters.ParamByName('@A).Value:=strA;
spTmp.Open;
spTmp.ExecProc;
spTmp.First;
while not spTmp.Eof do
begin
end; // while
spTmp.Close; spTmp.free;
spTmp.Open;
spTmp.ExecProc;
以后 spTmp.First;居然没错!!!!
还有 spTmp.Open; spTmp.ExecProc;。楼主应该再研究以下。
另外:Open后存储过程需要有返回结果集; ExecProc则不需要返回结果集。
对了,Prepared什么时候用,open之前需要吗?
一:你的驱动或者连接有问题
二:数据库建立不是很好
三:即使每create一次控件也不会感觉到慢的;建议:用个固定控件试试,如果还是慢就更个连接方式吧