我想在程序上德爾福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