Avatar billede halden Nybegynder
27. august 2003 - 00:00 Der er 15 kommentarer og
1 løsning

prepared statement

PreparedStatement pstmt = con.prepareStatement(
            "INSERT INTO produkter VALUES(?,?,?,?,?,?)"
);
pstmt.setString(1, parampart.getStringValue());
.
.
pstmt.setString(6, nytfilnavn);

SQLException: General error: Column count does't match value count at row 1

hvad kan der være galt?????
Avatar billede arne_v Ekspert
27. august 2003 - 00:01 #1
Jeg tror at Java forsøger at forklare dig at produkter ikke har
lige præcis 6 felter.
Avatar billede lap Nybegynder
27. august 2003 - 00:02 #2
tabellen produkter har ikke 6 kolonner
Avatar billede arne_v Ekspert
27. august 2003 - 00:03 #3
Enten skal der være lige så mange VALUES som der er felter - eller
så skal der angives hvilket felter du vil insætte i med:
  "INSERT INTO produkter (felt1,felt2,felt3,felt4,felt5,felt6) VALUES(?,?,?,?,?,?)
Avatar billede halden Nybegynder
27. august 2003 - 00:05 #4
der er 7 felter men det første er jo autonumber
Avatar billede jakoba Nybegynder
27. august 2003 - 00:05 #5
Du kan evt sige:
            "INSERT INTO produkter (feltnavn1, feltnavn2, feltnavn3, feltnavne4, feltnavn5, feltnavn6 ) VALUES(?,?,?,?,?,?)"

så skulle den du. medmindre der er et felt nr 7 der er 'NOT NULL' uden en defaultgenerator.

Dis spm handler om SQL, snarere end om Java.
Avatar billede halden Nybegynder
27. august 2003 - 00:07 #6
pointen er at jeg bruger PreparedStatement
Avatar billede jakoba Nybegynder
27. august 2003 - 00:07 #7
VALUES(0,?,?,?,?,?,?)    // i de fleste sql giver du 0 til automumber felter
Avatar billede arne_v Ekspert
27. august 2003 - 00:07 #8
Selvom det første felt ar autonumber skal du eksplicit angive hvilke felter
du vil inserte i.
Avatar billede arne_v Ekspert
27. august 2003 - 00:09 #9
jakob>

Jeg tvivler på at alle SQL vil tillade insert af 0 i et autonumber felt.
Avatar billede jakoba Nybegynder
27. august 2003 - 00:12 #10
Det tror jeg heller ikke de gør, men mange tager nullet og laver så deres autonummerering for at få en værdi til feltet. Det skal checkes med dolumentaionen hvad haldens sql gør.
Avatar billede halden Nybegynder
27. august 2003 - 00:13 #11
det virkede jakoba ---> KANON
Avatar billede arne_v Ekspert
27. august 2003 - 00:14 #12
Men ved at angive felterne eksplicit så virker det med alle SQL
dialekter.

Så umiddelbart synes jeg at det må være den bedste løsning.
Avatar billede halden Nybegynder
27. august 2003 - 00:18 #13
jeg er sikker på du også har ret arne v, men jeg kan jo ikke dele point.
så hvis jakoba vil have dem så må han skrige et svar
tusind tak
Avatar billede arne_v Ekspert
27. august 2003 - 00:20 #14
Du kan faktisk godt dele point.

Men hvis du synes at det er jakob der har løst dit problem, så har han jo
også fortjent pointene.
Avatar billede jakoba Nybegynder
27. august 2003 - 00:25 #15
P til arne-v. Jeg er helt enig med ham i at det er bedst at specificere feltnavnene.
Og når du engang har oplevet hvad der sker når en specifikations-ændring tvinger dig til at tilføje en kolonne med ALTER TABLE vi du også være enig :-))
Avatar billede halden Nybegynder
27. august 2003 - 00:36 #16
nu har jeg også ændret det igen.
ok, så får han dem.
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
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