AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism Datenbankverbindung mittels ODBC (System.Data.Odbc)
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankverbindung mittels ODBC (System.Data.Odbc)

Ein Thema von MrZweig · begonnen am 20. Jun 2004 · letzter Beitrag vom 23. Jun 2004
 
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Datenbankverbindung mittels ODBC (System.Data.Odbc)

  Alt 23. Jun 2004, 20:30
Ich hatte nicht bemerkt, dass du geantwortet hast.

Das hier habe ich eben in C# getippt (Sorry ich hatte gerade nicht genug Nerven für D8 )

Ersetze das Wort "Oracle" mit "ODBC", die Tabelle mit deiner und den Primärschlüssel mit dem aus deiner Tabelle -> schon müsste es laufen.

Ich persönlich finde einen Array in Sachen Datenbanken in .Net vollkommen fehl am Platz.
Selbst mit DataTable.LoadDataRow kann man nicht wirklich das absolut geniale DataSet.Merge nachbilden...



Code:
void ButtonClick(object sender, System.EventArgs e)
{
  OracleDataAdapter daSelData    = new OracleDataAdapter();
  daSelData.SelectCommand        = new OracleCommand("SELECT *"+ '\n'+
                                                       "FROM  Scott.Emp t"
                                                       ,connUser);
  DataTable        tblTemp      = new DataTable("Emp");
  //Hier unnötig, da wir die Tabelle bereits benannt erzeugen
  //daSelData.TableMappings.Add(new DataTableMapping("Table1", "Emp"));

  tblTemp .BeginLoadData();
  try
  {
    daSelData.Fill(tblTemp);
  }
  finally
  {
    tblTemp.EndLoadData();
  }

// der PrimKey verhindert das Einfügen doppelter Datensätze
// Mit DataSet.Merge sind dadurch noch ganz andere Spielereien möglich ;)
  tblTemp.Constraints.Add(new UniqueConstraint("primKeyEmpNo"
                                              ,tblTemp.Columns["EMPNO"]
                                              ,true));
  if (!DeinDataSet.Tables.Contains(tblTemp.TableName))
  {
  // legt die Tabelle im ZielDataSet an, falls sie nicht schon existiert, durch Clone bekommt sie alle Spalten und Constraints,
  // aber KEINE Daten
    DeinDataSet.Tables.Add(tblTemp.Clone());
  }

// der folgende Code könnte durch diese EINE Zeile ersetzt werden
// DeinDataSet.Merge(dsTemp, false);

  DataRow[] RowsArray = (DataRow[])Array.CreateInstance(typeof(DataRow)
                                                       ,tblTemp.Rows.Count);

  tblTemp.Rows.CopyTo(RowsArray, 0);

  foreach (DataRow dtrArray in RowsArray)
  {
  // Bei LoadDataRow wird durch den PrimKey auch ein doppeltes Einfügen verhindert.
  // Eine wirkliche Synchronisierung wie bei Merge klappt damit nicht. :/
    DeinDataSet.Tables[tblTemp.TableName].LoadDataRow(dtrArray.ItemArray, true);
  }
}
  Mit Zitat antworten Zitat
 


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 03:29 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