ID automatisch um 1 erhöhen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    ID automatisch um 1 erhöhen

    hallo,

    ich möchte gern in der Datenbanktabelle in der ersten spalte die ID automatisch hochzählen lassen.

    VB.NET-Quellcode

    1. cmd.CommandText = "INSERT INTO TBTEST (ID, [PACAU], [CHARGE])" _
    2. & "VALUES ((SELECT COUNT(SA_ID)+1 FROM TBTEST,'" & charge & "', '" & charge1 & "'")"


    aber irgendwas ist nicht richtig hier

    lieben dank für eure hilfe
    Es ist möglich, die Anzahl Einträge der Tabelle auszulesen und diesen Wert um eins zu erhöhen.
    Schöner resp. einfacher wäre es aber, wenn du das gleich automatisch von der Datenbank erledigen lässt.

    Die ID muss eindeutig sein (Primary Key) und soll sich automatisch erhöhen (Auto Increment).
    Stellst du dies bei der Spalte so ein, kannst du PACAU und CHARGE auch ohne ID einfügen.
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    hhmmm ja Auto increment ist das beste, die Tabelle wird mir gestellt und auf meine bitte hin Auto Increment zu machen konnte er mir erstmal nicht helfen da er nicht weis wie es geht und darum hatte ich diesen weg versucht. da werde ich doch auslesen und +1 erhöhen
    Das hab ich mir schon gedacht. Bohr da nach! Ist einfacher und sauberer! ;)

    Zu deinem Problem:
    Ich würde nicht die Anzahl Datensätze zählen. Beispiel: Du legst drei Datensätze an (ID 1 - 3). Nun löscht du den zweiten Eintrag. Wenn du jetzt einen Eintrag einfügst, und die Einträge zählst, kriegst du zweifelslos 3. Dann hast du eine doppelte ID im System -> unbrauchbar.

    Deshalb verwende lieber:
    SELECT TOP 1 Id FROM Table1 ORDER BY Id DESC
    Das gibt dir die höchste ID zurück. Diese kannst du um eins erhöhen.

    Aus'm Handgelenk geschüttelt ^^ :

    VB.NET-Quellcode

    1. cmd.CommandText = "INSERT INTO TBTEST (ID, [PACAU], [CHARGE]) " _
    2. & "VALUES ((SELECT TOP 1 ID FROM TBTEST ORDER BY ID DESC) + 1,'" & charge & "', '" & charge1 & "'")"
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Oder eher den Max Wert ID + 1

    VB.NET-Quellcode

    1. cmd.CommandText = "INSERT INTO TBTEST (ID, [PACAU], [CHARGE])" _
    2. & "VALUES ((SELECT MAX(SA_ID)+1 FROM TBTEST,'" & charge & "', '" & charge1 & "'")"


    Abgesehen davon wird hier beim allerersten Eintrag ein Fehler kommen, da die Tabelle noch leer ist.
    Lagere die Ermittlung der ID in eine eigene Abfrage aus. Falls der Wert NULL ist kannst du standardmäßig ja 1 nehmen. Sonst einfach Wert + 1

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    ErfinderDesRades schrieb:

    ich sehs wie Dancger: Fang da blos nicht mit som irrwitzigen Code-Horror an, der den nächsten Entwickler, der da ran muss, in den Wahnsinn treibt.
    Die Id muss AutoIncrement - basta.
    Beim Auto bastelt man ja auch nicht am Scheinwerfer rum, nur weil der Fahrer nicht weiß, wie das Fernlicht angeht.


    Geht AutoIncrement direkt im SQL? Im Dataset nützt ihm das relativ wenig bei einer Multiuseranwendung weil da evtl. doppelte Vergaben vorkommen die er abfangen müßte.