Avatar billede mikmakmuk Nybegynder
02. december 2003 - 09:53 Der er 11 kommentarer og
1 løsning

SQL i java

Hej Eksperter;

Jeg vil gerne max ordre_id hvor kundeid = "en variable". Det skulle nemlig meget gerne være det ordre_id jeg skal bruge når jeg laver min update, men hvordan får jeg lagt det over i en variable som jeg kan bruge :-)

if (ln.equals("1"))
        {
        d.select("select max(ordre_id) from ordre where kunde_id ="+kundeid+"");
         

          d.insertUpdate("insert into ordre_linie (ordre_id,vare_id,stk) values(2,"+vareid1+","+antal+")");       
        }
Avatar billede arne_v Ekspert
02. december 2003 - 09:55 #1
Du putter resultatet af din SELECT over i et ResultSet og læser
værdien derfra.
Avatar billede arne_v Ekspert
02. december 2003 - 09:56 #2
Formentligt:

ResultSet rs = d.select("select max(ordre_id) from ordre where kunde_id ="+kundeid+"");

rs.next();

int ordre_id = rs.getInt(1);
Avatar billede arne_v Ekspert
02. december 2003 - 09:56 #3
Og overvej så lige om det approach virker med flere samtidige brugere !
Avatar billede arne_v Ekspert
02. december 2003 - 09:56 #4
Og et svar.
Avatar billede mikmakmuk Nybegynder
02. december 2003 - 10:05 #5
okay tak jeg prøver :-)
Avatar billede roo104 Nybegynder
02. december 2003 - 10:07 #6
Ja arne har ret max er ikke god, hvis der bliver lavet 2 ordrer "samtidig", kan man komme til at vælge den forkerte med max. Hvis du bruger MySQL er her noget: http://www.mysql.com/articles/autoincrement-with-connectorj.html
Men igen det kræver dine ordrer kører med autoincrement, hvilket heller ikke altid er lige smart.
Avatar billede roo104 Nybegynder
02. december 2003 - 10:11 #7
Det burde vel også kunne klares i en sql sætning, hvis ellers din db understøtter sub-query

d.insertUpdate("insert into ordre_linie (ordre_id,vare_id,stk) values ((select max(ordre_id) from ordre where kunde_id ="+kundeid+"),"+vareid1+","+antal+")");
Avatar billede mikmakmuk Nybegynder
02. december 2003 - 10:15 #8
Det ville jo være fedt
Avatar billede mikmakmuk Nybegynder
02. december 2003 - 10:19 #9
Men det ser ikke ud til at virke :-( Jeg bruger MySQL version 4.0.16
Avatar billede arne_v Ekspert
02. december 2003 - 10:21 #10
Den form for subquery er ikke-standard.
Avatar billede arne_v Ekspert
02. december 2003 - 10:23 #11
Men den JDBC 3.0 feature som beskrives i roo's link er glimrende.
Avatar billede mikmakmuk Nybegynder
02. december 2003 - 10:37 #12
Det ser ud til at virke sådan her :-) Jeg kan godt se problemet hvis der er 2 som bestiller til den samme kunde samtidigt og jeg skal også have det løst på et tidspunkt. Lige nu er jeg bare glad for at det virker. Tak for hjælpen :-))


ResultSet rs = d.select("select max(ordre_id) from ordre where kunde_id ="+kundeid+"");
        try {
            rs.next();
            int ordre_id = rs.getInt(1);
            d.insertUpdate("insert into ordre_linie (ordre_id,vare_id,stk) values("+ordre_id+","+vareid1+","+antal+")");
//       
        } catch (SQLException s) {
                buffer.append("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
                }
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