Avatar billede mik28 Seniormester
04. marts 2003 - 09:52 Der er 13 kommentarer og
1 løsning

problem med insert

Hvorfor vil det her ikke virke. Ideen er at inserten kun skal udføres hvis rækken ikke allerede findes

ResultSet rs = d.select("SELECT * FROM tracks");
        while(rs.next()){
           
                String navn = rs.getString(2);
                String pass = rs.getString(3);
                System.out.println(navn+" "+pass+");   
                    if(name.equals(navn) && file.getFileName().equals(pass))
                    {
                      d.insertUpdate("INSERT INTO tracks (name,url) VALUES ('"+name+"','"+file.getFileName()+"')");               
                    System.out.println("raekken fandtes ikke om er oprettet!");
                    }
                }
Avatar billede di8leva Nybegynder
04. marts 2003 - 10:01 #1
og hvad er fejlen? indsætter den alltid eller aldrig eller noget?
Avatar billede erikjacobsen Ekspert
04. marts 2003 - 10:04 #2
Forklaringene er, at du løber alle række igennem, og
blot der er een, der ikke passer, vil du lave din insert.
Faktisk laver du en insert for hver eneste række, der ikke
passer.
Avatar billede mik28 Seniormester
04. marts 2003 - 10:05 #3
aldrig. I første omgang var problemet at hvis  if(name.equals(navn) && file.getFileName().equals(pass)) bliver opfyldt så skal der ikke ske en insert for så findes rækken jo, men ellers skal der.
Avatar billede erikjacobsen Ekspert
04. marts 2003 - 10:05 #4
Næh,. hov jeg læste forkert.... Du mener at du vel opdatere
den række du står ved? Så skal du brue en UPDATE, ikke en
INSERT
Avatar billede fsconsult.dk Nybegynder
04. marts 2003 - 10:07 #5
Du tester mod hver enkelt forekomst i din table, og vil dermed oprette en ny record for hver gang der findes en forekomst i forvejen som ikke matcher.

prøv med:
ResultSet rs = d.select("SELECT * FROM tracks WHERE name='" + name + '" AND pass='" + file.getFileName() + "'" );
if (! rs.next()) {
    d.insertUpdate("INSERT INTO tracks (name,url) VALUES ('"+name+"','"+file.getFileName()+"')");               
    System.out.println("raekken fandtes ikke om er oprettet!");
}
Avatar billede mik28 Seniormester
04. marts 2003 - 10:07 #6
Jeg vil bare konstaterer om der findes en række som er identiskt og hvis der gør det så skal den ikke indsættes :-)
Avatar billede erikjacobsen Ekspert
04. marts 2003 - 10:07 #7
Næh - heller ikke, ifølge det du siger ;) Hvad er det der skal ske ?
Avatar billede mik28 Seniormester
04. marts 2003 - 10:10 #8
Jeg vil bare konstaterer om der findes en række som er identiskt og hvis der gør det så skal den ikke indsættes :-)
Avatar billede di8leva Nybegynder
04. marts 2003 - 10:12 #9
hvad siger du om:

        ResultSet rs = d.select("SELECT * FROM tracks where name like '" + name "' and url like '" + file.getFileName() + "'");
        if(!rs.next())
        {
            d.insertUpdate("INSERT INTO tracks (name,url) VALUES ('"+name+"','"+file.getFileName()+"')");               
            System.out.println("raekken fandtes ikke om er oprettet!");
        }
Avatar billede mik28 Seniormester
04. marts 2003 - 10:18 #10
nu virker det. I er for seje :-))))

Jeg brugte

ResultSet rs = d.select("SELECT * FROM tracks WHERE name='" + name + '" AND pass='" + file.getFileName() + "'" );
if (! rs.next()) {
    d.insertUpdate("INSERT INTO tracks (name,url) VALUES ('"+name+"','"+file.getFileName()+"')");               
    System.out.println("raekken fandtes ikke om er oprettet!");
}
Avatar billede di8leva Nybegynder
04. marts 2003 - 10:19 #11
men du skall fortfarande bruge "like" i stedet for "=" nor du jæmfør strængar... =)
Avatar billede mik28 Seniormester
04. marts 2003 - 10:22 #12
Ikke forstået :-)
Avatar billede fsconsult.dk Nybegynder
04. marts 2003 - 10:23 #13
Du skal IKKE benytte "like" medmindre du har brug for at sammenligne om en streng indeholder en anden streng (wildcard søgning).

Hvis du bruger "like" fremfor "=" opnår du udelukkende en unødig belastning af databasen.
Avatar billede mik28 Seniormester
04. marts 2003 - 10:27 #14
Tak for hjælpen allesammen :-) Jeg brugte fsconsult.dk's indlæg.
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
Computerworld tilbyder specialiserede kurser i database-management

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