我想在程序上德尔福10.1柏林德尔福10.1德国柏林TADODataSet的问题。查询挂起
这里工作的TADODataSet
是我的代码:
rsGrid.Connection := MyADOConn;
rsGrid.CommandType := cmdText;
rsGrid.CommandText := 'my_StoredProc 100';
rsGrid.IndexName := 'ObjectID';
rsGrid.Active := True; //***** Showstopper here! *****//
while not rsGrid.Eof do
begin
Memo1.Lines.Add(rsGrid.FieldByName('ObjectID').AsString);
rsGrid.Next;
end;
DataSet中的Connection
属性设置如下:
function TMainForm.MyADOConn: TADOConnection;
begin
Result := TADOConnection.Create(nil);
with Result do
begin
ConnectionString := 'Provider=SQLNCLI11.1;Persist Security Info=False;User ID=user15;Password=mypassword;Initial Catalog=MyDB;Data Source=my.server.com;Initial File Name="";Server SPN=""'';
KeepConnection := True;
IsolationLevel := ilCursorStability;
Mode := cmUnknown;
LoginPrompt := False;
Connected := True;
end;
end;
数据库是SQL Server 2012,所以我尝试使用SQL Server Native Client 10和11(Provider=SQLNCLI10.1
和分别为)。
我打算以后用一个Grid组件(通过TDataSet)使用这个TADODataSet,但是我不能让这个东西在XE8,西雅图和现在的柏林工作。它只是挂在rsGrid.Active := True
。我也尝试过rsGrid.Open
,但它不起作用。
在同一时间它完美编译和执行我的XE4。 我在柏林做错了什么?
很确定它与你的问题没有关系,但你创建连接对象的方式是尖叫出内存泄漏。每次你调用这个函数'MyADOConn'时,它会创建一个新的连接实例,并且唯一的引用位于'rsGrid'内部。我希望你稍后可以将它释放,但即使如此,设计仍然存在重大缺陷,仍然可能导致大量泄漏。 –
谢谢你提到杰里,但这里只是一个例子。在我的真实应用程序中,连接对象被构造并正确释放;)由MadExcept证明。 –
如果用TAdoQuery替换TAdoDataSet,是否可以使用Object Inspector在IDE中成功打开它? – MartynA