Avatar billede dennish Nybegynder
17. juli 2007 - 19:09 Der er 2 kommentarer og
1 løsning

INSERT med autonummering

Hejsa jeg vil sådan set det samme som
http://www.eksperten.dk/spm/499428

Men min struktur ser dog følgende ud:
//Bruger PreparedStatement for at slipper for at skrive
VALUES('" +dData[0] + "','" + dData[1] + "','" +
dData[2] + "','" + dData[3] + "','" +               
dData[4] + "')");


PreparedStatement insertPstmt = null;
insertPstmt = conn.prepareStatement
insertPstmt = conn.prepareStatement("INSERT_INTO_BRUGERSTATUS = "INSERT INTO BrugerStatus(UserName,Projekt_Id,timeOut,Completed,Status,FriTekst,Navn,Email,Password,mail_sent,reminder_sent,allow_login,sent_date,exclude,last_completed,send_mail) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

insertPstmt.setString(1,userName);
insertPstmt.setInt(2,project_Id);
insertPstmt.setInt(3,timeOut);
insertPstmt.executeUpdate();
...
Overnstående virker. Jeg har dog et felt i databasen som hedder personId og dette felt skal have samme værdi som mit autunummeringsid (brugerId)Har så kigget på SELECT @@IDENTITY og er kommet frem til følgende:

ResultSet rsId = insertPstmt.executeQuery("SELECT @@IDENTITY");
while(rsId.next()) {
String personId =  rsId.getInt(1);
System.out.println(personId);
}
Får fejlen
java.sql.SQLException: Use of the executeQuery(String) method is not supported on this type of statement.

Hvad gør jeg galt ?
Og hvorfor er det egentlig smart med "SELECT @@IDENTITY". JEg mener hvorfor kan jeg ikke bare lave en almindelig SELECT statement på mit autogenerede id ?
Avatar billede dennish Nybegynder
17. juli 2007 - 19:39 #1
Fandt selv løsningen på nettet. Rækkefølgen har en betydning !!!


insertPstmt.execute();
insertPstmt.close();
insertPstmt = conn.prepareStatement("select @@identity");
ResultSet rsId = insertPstmt.executeQuery();
if (rsId.next()) {
identity = rsId.getLong(1);
System.out.println(identity);
}
rsId.close();
insertPstmt.close();
Avatar billede dennish Nybegynder
17. juli 2007 - 19:39 #2
lukker spørgsmålet
Avatar billede arne_v Ekspert
17. juli 2007 - 21:36 #3
Check evt. ogsaa pstmt.getGeneratedKeys() !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester