Avatar billede gittemadsen Nybegynder
10. december 2002 - 23:28 Der er 3 kommentarer og
1 løsning

Lave en insert med hjælp af autoincrement

Dette er i min klasse hvor jeg har tilgang til database:
String query="INSERT INTO kunder VALUES("+"'"+nykunde.getfornavn()+"'"+", '"+nykunde.getefternavn()+"'" + ",'"+ nykunde.getadresse()+"'"+"," +nykunde.getpostnr()+",'" +nykunde.getbynavn()+"','"+nykunde.gettlf()+"')";

Her er min sql table:
CREATE TABLE kunder      (
kundenr int NOT NULL auto_increment,
fornavn    varchar(30),
efternavn Varchar(30),   
adresse    varchar(50),
postnr int NOT NULL,
bynavn    varchar(40),
tlf varchar(20),
PRIMARY KEY(kundenr)
)Type=innoDB;

Dette er fejlen:
INSERT INTO kunder VALUES('dfhdfh', 'fghfdh','fghfgdh',1111,'fdhdfh','fghfdh')

Du kan dedsværre ikke inserte: java.sql.SQLException: [MySQL][ODBC 3.51 Driver][mysqld-3.23.53-max-nt]Column count doesn't match value count at row 1

Jeg kan simpelthen ikke huske syntaksen, og jeg har også på fornemmeren at der er et andet sted i en anden klasse der spiller ind...
Det er nemlig fra min kundegui jeg aflæser felterne:
   
public Kunde getOpretKunde(){// når vi opretter en kunde skal vi ikke have kundenummer med
        Kunde k =new Kunde();
    k.setfornavn(fornavnfelt.getText());
    k.setefternavn(efternavnfelt.getText());
    k.setadresse(adressefelt.getText());
    k.setbynavn(byfelt.getText());
    k.settlf(tlffelt.getText());
    k.setpostnr(Integer.parseInt(postNrfelt.getText()));
    return k;
    }       

Hvis der er nogen der kan umiddelbart hitte ud af dete vil jeg blive glad, jeg orker ikke at holde mine øjne åbne længere og energien er væk, så simpelt eller ej...

Hjælp
Avatar billede erikjacobsen Ekspert
10. december 2002 - 23:41 #1
Du skal bare nævne felterne

INSERT INTO kunder (felt1,felt2,felt3,felt4,felt5) VALUES('dfhdfh', 'fghfdh','fghfgdh',1111,'fdhdfh','fghfdh')

og dermed springe dit autoincrement felt over
Avatar billede disky Nybegynder
11. december 2002 - 08:37 #2
Eller du kan gøre:
INSERT INTO kunder VALUES('','dfhdfh', 'fghfdh','fghfgdh',1111,'fdhdfh','fghfdh')

Altså lade være med at angive en værdi til auto_increment feltet.
Avatar billede dittmer Nybegynder
12. december 2002 - 13:47 #3
Øhhhh... Hvad var der i vejen med det første svar? Det er da osse fuldt ud gyldigt, ikke? Og det giver en anden fordel, da man ved, hvilke felter de enkelte data ryger i...

erikjacobsen> Kan man egentlig ændre på rækkefølgen af felterne, eller skal den følge tabellen? Det ville jo da være en måde at afkoble forespørgsler og fysisk repræsentation...
Avatar billede disky Nybegynder
12. december 2002 - 14:12 #4
Du kan godt ændre på rækkefølgen hvis du angiver felterne, først angiver du hvilke felter og i hvilken rækkefølge, derefter deres nye værdi.

Metode #1 giver kun mening hvis man ikke vil fylde alle felter, metode #2 er bedst hvis man fylder alle felter som det er tilfældet her.
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