Avatar billede mulp Nybegynder
06. juni 2003 - 08:27 Der er 9 kommentarer og
1 løsning

Indsættelse af data / hent primærnøgle (autonummerering)

Jeg har en relation med syv forskellige attributter - heraf den ene primærnøglen med autonummerering.

Hvordan kan jeg (fra java) indsætte data i de seks attributter, for derefter at hente/få primærnøglen der bliver genereret for den tuple jeg lige har indsat??

//mulp
Avatar billede zapzap Nybegynder
06. juni 2003 - 11:26 #1
Bruger du Access 2000, kan du bruge:
  SELECT @@identity;

det giver den senest indsatte auto-id. Virker også med SQL Server.
Ellers skal du nok bruge select max(id-feltet), men det virker ikke så godt (læs: ikke) hvis der er flere samtidige opdateringer, da du jo så altid får den højeste...
06. juni 2003 - 11:32 #2
zapzap-> jeg har aldrig fået SELECT @@identity til at virke i Access.
Har du afprøvet det?
Avatar billede mulp Nybegynder
06. juni 2003 - 11:33 #3
Hvordan skal det implementeres?
SELECT @@identity
FROM Tabel;

Hvor identity er attributten der er autogenerering på, og Tabel er den relation det drejer sig om??
Avatar billede mulp Nybegynder
06. juni 2003 - 11:34 #4
Når vi implementerer på ovenstående måde men med "identity" i stedet for attributnavn, får vi bare et nul ("0") for hver række...
Avatar billede arne_v Ekspert
06. juni 2003 - 13:50 #5
Under forudsætning af at du bruger J2SE 1.4 og en JDBC 3.0 compliant driver
kan du:

Statement stmt = con.createStatement();
stmt.executeUpdate("INSERT INTO tabelnavn (felt1, felt2) VALUE (værdi1, værdi2)";
ResultSet rs = stmt.getGeneratedKeys();
Avatar billede zapzap Nybegynder
06. juni 2003 - 14:46 #6
>> flere:
Bare SELECT @@identity
Men det er altså kun Access 2K der har den.
F.eks.

INSERT INTO tabelnavn (felt1, felt2) VALUE (værdi1, værdi2);
select @@identity;

>> mulp: arne_v's løsning ser fed ud, den virker nok også med andet end MS Access og SQL Server.
Avatar billede arne_v Ekspert
06. juni 2003 - 16:07 #7
Den er helt uafhængig af databsen. Det store men er "JDBC 3.0 compliant" !
Avatar billede mulp Nybegynder
06. juni 2003 - 17:06 #8
sorry - ingen af de gode løsninger virkede, så jeg måtte bruge "select max()"...

Men mange tak for hjælpen! :)
Avatar billede arne_v Ekspert
06. juni 2003 - 17:09 #9
Den er næppe sikkert i en fler-bruger kontekst.
Avatar billede mulp Nybegynder
06. juni 2003 - 17:41 #10
Det er til en skoleopgave, så det ser jeg bort fra - ellers tak! :)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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