![]() |
Ado.Net Beispiele
Ich bin grad auf der Suche nach einem oder mehreren Beispielen für standard aktionen für ado.net
müsste nicht grundsätze oder zusammenhänge erklären, die sind klar, bloß schaff ichs grad nicht in ein dataset 2x daten rein zu laden, sprich das erste mal läd er daten rein, wenn ich dann das sql statement änder, alles neu cleare und dann neu öffne sind immernoch die gleichen daten drin :D |
Re: Ado.Net Beispiele
Na ein Simples DataAdapter.Fill füllt ein Dataset. (Und zwar immer wieder ;) )
Wenn du wirklichen einen DataAdapter nehmen willst:
Aber immer dran denken: DataAdapter ist meist massiv langsamer als ein DataReader. ;) |
Re: Ado.Net Beispiele
ja mal sehn, ich bin z zt noch am rumspieln. außerdem würd ich gern das gleiche dataset wiederverwenden und mir nicht bei jedem query ein neues erzeugen
e: wie würd ich zb über den datareader daten in ein grid reinpacken? ich wollte erstemal standard funktionalitäten nachbauen, sprich navigieren, löschen, hinzufügen, abfragen usw. was sind dafür die besten/schnellsten techniken und wer kennt jetzt eigentlich ein tutorial oder beispiel? :) |
Re: Ado.Net Beispiele
Nochmal:
Du füllst ein temporäres DS. Dann rufst du die Methode Merge von deinem "richtigen" DS auf. Dadurch werden nur die geänderten/neuen Datensätze aus dem temporären DS in dein "richtiges" DS übernommen. (genau dafür brauchst du den Primärschlüssel ;) ) DataReader in einfach ;)
Delphi-Quellcode:
Wenn es schnell gehen soll ist ein Dataset vollkommen fehl am Platz (Das Ding ist eine kleine DB im RAM -> viel zu aufwenidig ;) ). Jede implementierung vin IList / ICollection sollte Databindingfähig sein. (Also auch jeder Nachfahre von CollectionBase oder ganz einfach: eine ArrayList :) )
var
conn :[IrgendeinProviderPrefix]Connection; cmd :[IrgendeinProviderPrefix]Command; rdr :[IrgendeinProviderPrefix]Datareader; tbl :DataTable; Values :array of System.Object; begin tbl := DeinDataSet.Tables[Index/Name deiner Tabelle]; conn := [IrgendeinProviderPrefix]Connection.Create('"USER ID=User;Password=Password;Data source="datasource"'); cmd := [IrgendeinProviderPrefix]Command.Create('SELECT FROM IrgendeineTabelle' , conn); conn.Open(); rdr := cmd.ExecuteReader(CommandBehaviour.CloseConnection); Values := Array.CreateInstance(typeof(System.Object) ,rdr.FieldCount); while (rdr.Read()) begin rdr.GetValues(Values); tbl.LoadDataRow(Values, false); end; end; |
Re: Ado.Net Beispiele
naja ich möcht eben nicht mergen sondern komplett das resultset neu aufbauen, da es eben unterschiedliche tabellen seien können. verwende grad noch dataadapter, einfach zum einarbeiten testen, probieren usw...
stark vereinfacht schaut das aktuell bei mir so aus:
Delphi-Quellcode:
so in etwa hatt ich mir das erstmal vorgestellt (weiß nicht ob ich da jetzt an alles gedacht hab, hab ich grad so ausm gedächtniss getippt), bloß ist das resultset genau das gleiche obwohl anderes statement. anscheinend fehlt da noch irgendwo n zusätzliches flush oä.
begin
//conn=IfxConnection, adp=IfxDataAdapter, cmd=IfxCommand, ds=Dataset //alles komponenten aufm formular, schon initialisiert und verknüpft //hab noch ein datagrid das als source das dataset eingestellt hat cmd.CommandText := 'SELECT * FROM TabA'; conn.Open; adp.Fill(ds); conn.Close; //jetzt stehn die sachen aus der abfrage im grid //mein grid soll jetzt ein anderes rs anzeigen cmd.CommandText := 'SELECT * FROM TabB'; ds.Clear; //daten vom letzen query löschen //neue reinhaun conn.Open; adp.Fill(ds); conn.Close; end; |
Re: Ado.Net Beispiele
cmd ist sicher das SelectCommand deines da? :gruebel:
|
Re: Ado.Net Beispiele
wenn du mit "da" dataadapter meinst, kann ich das bestätigen, ja :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz