tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
557
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Maxii Maxii ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Ort
    Österreich
    Beiträge
    95
    Ich mache einen Insert auf irgendeine Tabelle.
    Die Tabelle selbst hat eine ID-Spalte, welche eindeutig die ID's vergibt.
    Nach dem Insert Befehl möchte ich die vergebene ID auslesen.
    geht das irgendwie, außer mit einem anschließenden Select-Befehl?
    Mfg
    Markus Gruber
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wennst uns jetzt noch sagst welche Datenbank du benutzt ....
     

  3. #3
    Maxii Maxii ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Ort
    Österreich
    Beiträge
    95
    Naja, sollte eigentlich egal sein, oder?
    weil ich immer mit .ExecuteNonQuery() die Anweisung schicke.
    Aber trotzdem:
    - MSSQL Server
    - MySQL
    - Access
    sollte wenn möglich bei allen 3 funktionieren.
     

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Code :
    1
    
    SELECT @@IDENTITY as lastid ...

    Das funktioniert sicher bei MSSQL und bei MySQL 4 (obs bei 3 auch schon geht, weiß ich nicht, hab ich auch nicht getestet). Unter Access wird diese Variante wohl nicht gehen ...

    Wenn Du es mit einem nachfolgenden Select machst, solltest die Tabelle allerdings locken, immerhin könnte es ja sein, dass bereits ein weiterer Datensatz in der Zwischenzeit eingefügt wurde. Das Locken hat dann allerdings auch wieder Nachteile (Performance etc.)
     

  5. #5
    Registriert seit
    Nov 2003
    Ort
    Bergen / Norway
    Beiträge
    309
    Hi

    Unter Access wüßte ich es nicht . Meiner Meinung nach geht das da nur mit anschließendem SELECT Befehl !

    Wenn jemand was anderes weiß dann heraus damit !

    DarkGreetinx LordDeath
     
    "Gott ist tot! Gott bleibt tot! Und wir haben ihn getötet." - Friedrich Nietzsche

  6. #6
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Naja, andere Richtung geht auch:

    1) Lock auf die Table setzen
    2) Letzte ID auslesen und 1 addieren
    3) Insert schreiben
    4) Lock aufheben
     

  7. #7
    XChris XChris ist offline Mitglied Brokat
    Registriert seit
    Sep 2003
    Ort
    Weimar
    Beiträge
    373
    Bei MySQL kann man die letzte eingefügte ID mit LAST_INSERT_ID() ermitteln.

    Chris
     

  8. #8
    Maxii Maxii ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Ort
    Österreich
    Beiträge
    95
    Ich danke für die Antworten, aber das ist alles so "kompliziert".
    Ich mein jetzt nur programmiertechnisch.
    Der Befehl ExecuteNonQuery() liefert mir die Anzahl der Reihen zurück, welche mit diesem Insert Befehl( meistens 1) zurück. Damit fang ich nichts an und da dachte ich dass es eine vernünftige Antwort gibt. Da hab ic mich wohl getäuscht.
    Mit den oben genannten Vorschlägen, bleibt das ganze System nun langsam.
     

Ähnliche Themen

  1. Datenbanken
    Von Tagamoga im Forum Java
    Antworten: 2
    Letzter Beitrag: 04.05.09, 13:52
  2. Datenbanken
    Von Sircoly im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 29.04.06, 17:34
  3. XML und Datenbanken
    Von mkoeni1 im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 18.02.06, 22:45
  4. Datenbanken
    Von zumpe im Forum PHP
    Antworten: 4
    Letzter Beitrag: 16.12.04, 13:00
  5. 2 Datenbanken
    Von akkie im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.05.03, 21:23