Avatar billede mholst Nybegynder
27. november 2002 - 13:31 Der er 4 kommentarer og
1 løsning

Hvordan ser vi id

Hej igen.
Vi har nu fået vores database til at køre og har også puttet nogle ting ind i den. Det fungerer sådan set fint. De enkelte rækker i tabellerne skal have en id, og det tror vi også at de har fået med noget kode der ligner dette:
create table PROFIL ( id int not null auto_increment, PRIMARY KEY(id)

Problemet er at vi ikke kan se id'et, og det vil vi gerne, da vi senere skal bruge det til at lave noget forskelligt krydsreferering.
Avatar billede flse Nybegynder
27. november 2002 - 13:42 #1
Det ligner MySQL syntax for CREATE TABLE.

Der er flere muligheder. Den som jeg selv benytter p.t. er umiddelbart efter INSERT:

  ResultSet rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");
  if (rs.next()) lastInsertId = rs.getLong(1);
Avatar billede flse Nybegynder
27. november 2002 - 13:43 #2
Du kan også lave cast af dit statement til MySQL statement klassen, men det virker tilsyneladende ikke ved prepared statements.
Avatar billede arne_v Ekspert
27. november 2002 - 14:14 #3
Det er faktisk ikke helt nemt at løse uden at
blive database afhængig (jeg ved godt at auto_increment
heller ikke er database uafhængig).

En måde var ikke at bruge database autoincrment, men
selv generere en unik ID.

Sådan UID/OID generering er en standard ting at gøre.
Den generelt acceptede bedste måde at gøre det på
er Scott Ambler high-low approach.

Men det kræver altså lidt ekstra programmering (og kan
iøvrigt også nemt resultere i noget database afhængig
programmering for at få låst tabellen).
Avatar billede arne_v Ekspert
27. november 2002 - 14:16 #4
Hvis jeres database understøtter stored procedures
var det en mulighed at lave en SP som indsatte data
og returnerede ID'en.

(stored procedures er dog heller ikke database uafhængig)
Avatar billede arne_v Ekspert
27. november 2002 - 14:18 #5
Og endelig er der den nemme: hvis I er helt 110% sikre
på at der altid kun vil være en som opdaterer denne
tabel af gangen, så kan I bare selecte den højeste
værdi fra feltet og bruge den.

Ikke anbefalelsesværdigt generelt.
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