[java+mysql] last insert id ophalen

Pagina: 1
Acties:

  • jurri@n
  • Registratie: Maart 2000
  • Laatst online: 28-08 13:37
Ik ben bezig met het schrijven van een java-applicatie die bedrijfsgegevens opslaat in een MySQL-database. Nu zit ik met het volgende probleem: de tabel met offerte's wordt automatisch genummerd door een auto_increment. Na een INSERT wil ik dus met last_insert_id() en in een venstertje laten zien wat het offerte-nummer is geworden. ik gebruik daarvoor het volgende stukje code:
Java:
1
2
3
ResultSet resultSet = statement.executeQuery("SELECT LAST_INSERT_ID() AS lastid");
String nummer = resultSet.getString("lastid");
JOptionPane.showMessageDialog(null,"De aanbieding is opgeslagen onder nummer "+nummer,"Projectnummer",JOptionPane.INFORMATION_MESSAGE);


Ik weet dat ik de integer als string ophaal, maar dat moet niet uitmaken (doe ik al meer in de applicatie).

Maar dit stukje code werkt dus niet. Uit de foutmeling begrijp ik dat de resultSet steeds 0 rijen bevat... wie kan mij helpen?

[ Voor 0% gewijzigd door jurri@n op 21-11-2002 10:32 . Reden: } te veel ge-copy-paste ]


  • Peetman
  • Registratie: Oktober 2001
  • Laatst online: 27-08 23:01

Peetman

Tjah....

Als je via een recordset werkt kan je op de volgende manier achter het id komen (voorbeeld werkt bij mij onder ADO):

-recordset.addnew (of zoiets)
-recordset(veld1) = waarde1
-recordset(veld2) = waarde2
-recordset.update
-last_id = recordset(id)

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Volgens mij moet je resultSet.next() doen voor getString.

[ Voor 20% gewijzigd door marcusk op 21-11-2002 22:39 ]


  • jurri@n
  • Registratie: Maart 2000
  • Laatst online: 28-08 13:37
Het het gevonden. De oplossing van marcusk had ik al gebruikt en meteen binnen een if gehangen. (ik gebruikte alleen resultSet.first() ). Had alleen even verkeert gedacht en er een ! voorgezet om de boel om te keren.

de werkende code:
Java:
1
2
3
4
5
ResultSet resultSet = statement.executeQuery("SELECT LAST_INSERT_ID() AS lastid");
if (resultSet.first()) {
  String nummer = resultSet.getString("lastid");
  JOptionPane.showMessageDialog(null,"De aanbieding is opgeslagen onder nummer "+nummer,"Projectnummer",JOptionPane.INFORMATION_MESSAGE);
}