1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

IBM DB2 DB: ID beim schreiben in die DB übergeben

Dieses Thema im Forum "DB2" wurde erstellt von Wurschtsuppe, 21 Februar 2011.

  1. Wurschtsuppe

    Wurschtsuppe Benutzer

    Hallo zusammen,

    ist es möglich (und wenn ja wie), das wenn ein Datensatz in eine Tabelle geschrieben wird das die eindeutige ID mitgeteilt wird.
    Hintergrund ist der, ich habe mehrere Tabellen. Eine davon ist auto increment (Spalte ID), sie ist sozusagen die Haupttabelle.
    Diese Spalte ist auch in den anderen Tabellen vorhanden und untereinander verknüpft.
    Ich habe nun ein VB.NET Oberfläche mit der ich diesen ganzen schreib/lese vorgang in die Tabelle bediene.
    Wie ist es nun möglich, das wenn ein Datensatz geschrieben wird, das mitgeteilt wird um welche ID es sich handelt. Da ich dies wissen muss, um im nachgang, die anderen Tabellen füllen zu können.

    Kann mir irgend jemand helfen, oder hat eine Idee.

    P.S.: Eine eine Einzelne Abfrage wie die ID lautet, würde zu lange dauern. In Access z.B. ist es ja auch so das intern die ID mitgeteilt wird unter welchem der neue Datensatz steht...
     
  2. Charly

    Charly Datenbank-Guru

    Hallo Wurschtsuppe,

    Bei Access arbeitest Du ja auch mit ein permanent verbundenen Datenquelle. Das hat man bei .NET abgeschaft.

    Mit ADO.NET ist es möglich die Logik für UPDATE, DELETE, INSERT und SELECT selber zu schreiben und entsprechende Prozeduren auf dem Server auszuführen.
    Jetzt könntest du dem INSERT-Command eines DataAdapter eine INSERT-Prozedur zuweisen die als Rückgabeparameter die ID hat.
    Ich habe zwar noch keine Tabellen-ID mit einem INSERT-Command zurückgegeben, technisch müsste es aber möglich sein.

    Deine Frage ist aber mehr so was für ein VB-Entwickler-Forum.

    Gruß Charly
     
  3. Wurschtsuppe

    Wurschtsuppe Benutzer

    Hallo Charly,

    danke erstmal für deine Antwort.
    In der Tabelle ist ja ein Primary Key definiert. Dieser wird aber bei der Abfrage nicht zurück gegeben.
    Ich habe das ganze schon mit MySql getestet, und da funktioniert es komischerweise.
    Hättest du vlt. noch eine Idee woran das liegen könnte?

    P.S.:leider muss ich ich die IBM DB/2 verwenden... :-(
     
  4. Charly

    Charly Datenbank-Guru

    Hallo Wurschtsuppe,

    welche Datenprovider (OLE DB, ODBC, etc.) benutzt Du für die Verbindung zu mySQL und DB2?

    Gruß Charly
     
  5. Wurschtsuppe

    Wurschtsuppe Benutzer

    Für DB2 verwende ich ODBC. Als ich es zuhaus getestet hatte mit mySQL habe ich den mySQL-Connector verwendet.
     
  6. Charly

    Charly Datenbank-Guru

  7. Wurschtsuppe

    Wurschtsuppe Benutzer

    Ok...das schau ich mir mal an, vielen dank erstmal.
    Ich melde mich nochmal ob es funktioniert hat:)!
     
  8. Wurschtsuppe

    Wurschtsuppe Benutzer

    Hi also das mit dem angegebenen Datenprovider funktioniert gut.
    Aber eine Frage hätte ich noch, und zwar wenn ich einen INSERT in die Tabelle mache bekommt der Dataapdapter nicht mit welche ID von der Datenbank vergeben wurde.

    Weißt du wie ich das am besten löse?

    Grüße
     
  9. Charly

    Charly Datenbank-Guru

    Hallo Wurschtsuppe,

    also sind wir wieder am Anfang.

    Zuerst hatte ich die Vermutung dass es am Provider liegt.

    Benutzt Du zurzeit 'SELECT @@IDENTITY' um an den eingefügten Wert zu kommen?

    Wenn nicht würde ich das mal versuchen. Einfach an das INSERT eines Command-Objekts hängen.

    So etwa: INSERT INTO ... ; SELECT @@IDENTITY

    Es gibt auch noch die Funktionen SCOPE_IDENTITY und IDENT_CURRENT für Prozeduren, Funktionen und Trigger.

    Wenn Du mit einem Dataset arbeitest musst Du mir das noch sagen. Da funktioniert es anders.

    Alternativ kannst du mit GUIDs arbeiten. Die müssen nicht geprüft werden.

    Gruß Charly
     

Diese Seite empfehlen