AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ado.Net Beispiele

Ein Thema von RuX · begonnen am 3. Nov 2004 · letzter Beitrag vom 4. Nov 2004
Antwort Antwort
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#1

Ado.Net Beispiele

  Alt 3. Nov 2004, 08:54
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
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Ado.Net Beispiele

  Alt 3. Nov 2004, 09:55
Na ein Simples DataAdapter.Fill füllt ein Dataset. (Und zwar immer wieder )
Wenn du wirklichen einen DataAdapter nehmen willst:
  • Setze einen Primärschlüssel für dein DataSet
  • jetzt kannst du das machen:
    Delphi-Quellcode:
    var
      dsTemp :DataSet;
    begin
      dsTemp := DeinDataset.Clone();
      DeinDataAdapter.Fill(dsTemp);
      DeinDataSet.Merge(dsTemp, false);
    end;
    Du erzeugst ein neues DataSet und über die Methode Clone verpasst du ihm die gleiche Struktur wie deinem "richtigen" DS.
    Du füllst das temporäre DS mit dem DataAdapter. Jetzt kannst du über die Methode Merge beide DS "ineinanderschieben". (Dafür brauchst du aber einen Primärschlüssel )

Aber immer dran denken: DataAdapter ist meist massiv langsamer als ein DataReader.
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#3

Re: Ado.Net Beispiele

  Alt 3. Nov 2004, 10:42
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?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Ado.Net Beispiele

  Alt 3. Nov 2004, 11:22
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:
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;
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 )
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#5

Re: Ado.Net Beispiele

  Alt 3. Nov 2004, 12:48
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:
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;
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ä.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Ado.Net Beispiele

  Alt 3. Nov 2004, 19:08
cmd ist sicher das SelectCommand deines da?
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#7

Re: Ado.Net Beispiele

  Alt 4. Nov 2004, 08:12
wenn du mit "da" dataadapter meinst, kann ich das bestätigen, ja
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz