# JDBC Funtion für auto_increment oder nextval(sequence)



## huckfinn (29. Sep 2006)

Hallo, 

gibt es in JDBC oder anderen API's eine Möglichkeit *generalisiert* die nächsten ID eines Primärschlüssels zu ermitteln. Also den ganzahligen Wert eines Feldes "feld int auto_increment" bzw. "feld serial"  die das RDBMS schreiben wird? Ich weiß nur, daß es bei Postgesql über die Abfrage der zugehörigen Sequenz geht. Bei MYSQL gibts die doch garnicht. 


```
public int getNextSequenceValue(String indentSeqName) throws SQLException {
        stmt.executeQuery("SELECT CURRVAL('" + indentSeqName + "');");
        rs = stmt.getResultSet();
        rs.next();   rs.close();     
        return rs.getInt(1)+1;
    }
```

Gibt es nicht irgend eine JDBC Klasse die das tut, oder muß man das für jeden Datenbanktyp anders implementieren.

Bis denne und vielen Dank huck


----------



## huckfinn (2. Okt 2006)

Hi Community   ???:L  hat keiner 'ne Idee Bis denne Huck


----------



## thE_29 (2. Okt 2006)

Nope, da das jeder anders hat!

Postgres wäre select nextval(NAME)

Oracle wäre select NAME.nextval FROM dual

Als bsp!

Ob es bei postgres auch mit dem nextval geht, weiß ich nicht


----------



## Fraiser (4. Okt 2006)

Ich glaub sowas ähnliches brauchte ich auch schonmal.

Du könntest eine Funktion schreiben, die das autoincrement übernimmt.
Also ein Integer liefert und sich bei jedem aufruf den "NächsterFreierSchlüssel" erhöht.

Dazu brauchste dann aber noch eine Tabelle mit den spalten "Tabellenname" und "NächsterFreierSchlüssel"

Dann kannste mit Hilfe der Funktion die Werte einfügen (INSERT INTO table VALUES(funktion(Tabellenname),'text',...=);  und mit nem Select die den nächsten freien Key holen.

musst halt immer deine Funktion anpassen.

Hoffe du verstehts was ich meine  :lol:


----------



## Guest (6. Okt 2006)

Hi,

Danke für die Tipps. Wie es aussieht gibt es nix generalisiertes. Will heißen das 'ne Applikation in diesem Falle
immer an das Datenbankbackend gebunden ist. Was solls bis denne Huck


----------

