Delphi 2010將TSimpleDataset用於多種用途
我正在嘗試將TSimpleDataset用於多種用途。
var
q: tsimpledataset;
row: String;
n: Integer;
begin
q:=tsimpledataset.create(nil);
q.connection:= SQLConnection1 ;
q.dataset.commandtype:=ctQuery ;
q.dataset.commandtext:='select lastid from last_id where tablename=:ARow';
q.Params.Assign(q.Dataset.Params);
ShowMessage(q.dataset.commandtext);
row:='accounts';
q.params[0].asstring:= row;
q.open;
if q.isempty then
raise exception.create('No matching row found in LAST_ID table.');
n:=q.fieldbyname('lastid').asinteger +1;
q.close;
q.dataset.commandtype:=ctQuery ;
q.dataset.commandtext:='update last_id set lastid=22';
q.execute; //exception Here!
end;
我上q.Execute線以下錯誤:
缺少數據提供商或數據包
似乎是與TSimpleDataset的關閉和它的再利用問題。 它會工作,如果我釋放它並重新創建它,並重新確定屬性和新屬性以將其用於執行。不過,我想不必這樣做。我希望能夠關閉它,然後分配一個新的CommandText並重新使用它。
我研究並閱讀了很多關於互聯網不使用拖車TSimpleDataset的reagrding,而是使用其他三個組件(ClientDataSet,DataSetProvider和SQLDataSet)的其他組件。你會認爲,到2010年,Embarcadero公司已經解決了TSimpleDataset的任何問題。
除了需要翻譯TSimpleDataset之外的其他東西嗎?
謝謝!
我對TSimpleDataSet沒有太多經驗,但通常我根本不會重用數據集。只需將它們放在數據模塊上,儘可能使用IDE進行配置,並且不要編寫所有代碼以重用單個組件,而只能使用兩個組件。他們不會消耗太多的記憶(幾乎沒有),所以不要被這個困擾。 – GolezTrol
對不起,但那不是一個選項。我需要在運行時創建和使用它們,並將它們用於多種用途。 – IElite
TSimpleDataSet不是一個嚴重的組件,你會很快超過它。這是我的猜測,這就是爲什麼英巴卡迪諾可能會忽略它。如果要簡化刪除3組件TClientDataSet,TDataSetProvider,TSQLDataSet的過程,請查看[組件模板](http://delphi.wikia.com/wiki/Creating_Component_Templates) – LachlanG