Hej! hello. okej! okej.. Jag förstod inte riktigt det där... Please,please Hej! Hej Per-erik. Hej! Hello. Jippijava + sql
Har en liten fråga till någon som är duktig på java.
Det är så att jag har ett program som jobbar mot en databas
Accsess, allt fungerar som tåget utom när jag försöker gjöra en update
av en kolumn i databasen.
Lite fakta:
java application med text arrayer som är skrivet i prog.
tex JTextField[] texter={new JTextField(" ",30)
dessa är sedan indexerade från 0-3, beroende på vad som står
i databas tabellen.
Tabellen heter Artikel, och kolumnerna Är Artikelnamn,Pris,Amtal,Artnr
När jag kör denna sats får jag följande meddelande - too few parameters
sqlsats="UPDATE Artikel SET Antal="+texter[2].getText().trim()+","+
// "Pris='"+texter[1].getText().trim()+"',"+
"Artnr="+Integer.parseInt(texter[3].getText().trim())+
" WHERE Artikelnamn='"+texter[0].getText().trim()+"'"+
" AND Pris='"+texter[1].getText().trim()+"'";
Någon som ser vad felet ligger, eller??
Hoppas på tur.Sv: java + sql
Kan inte se något direkt fel på din sqlsats.
Ett förslag är att köra en sout innan du 'executar' sql:en typ:
>System.out.println("SQLSATS--> "+sqlsats);
Det kan vara lättare att se vad som är fel på sql:en då.
Sen ser det ut som om du gör en helt onödig parseInt.
>Integer.parseInt(texter[3].getText().trim())
Som iaf blir en String till slut!?
Lycka till
PeterSv: java + sql
Tack för att du svarade.
Problemet är att jag har försökt med en sout. och får följande
Fel vid updateringjava.sql.SQLException[Microsoft blabla]too few parameters.Expected 1.
Det tråkiga är att jag har ett annat prog, som är uppbyggt lika dant,
men kör mot en annan databas, detta fungerar.
Jag vill uppdatera antal i min databas, efter en beställning.
Det andra prog. som fungerar är en uppdatering av namnet.
tex Tabell Bil
kolumn regnr
kolumn märke
kolumn pid ----------> = pk.
I mitt nya är artnr --------->=pk.
Men det skall kvitta eller hur.
Hoppas på ny tur /AndersSv: java + sql
Men jag har kollat runt lite och det verkar som att
"too few parameters" betyder att det är något fel i where-delen på sql:en.
Om detta stämmer så kan du ju prova att ta bort ett element i taget det är ju bara två så det bör ju gå fort, tills du hittar var felet är.
PeterSv: java + sql
Har snart slitet av mig det lilla hår som jag har kvar.
Hur jag än tänker och gör så vill inte detta fungera,
Insert och Delete fungerar utmärk men ej Update.
Dessa är uppbyggda på samma sätt , med textArrayer.
Kan bara ändra i applicationen men ej i databasen.
Annars var dina tips bra/Pezas.
/AndersSv: java + sql
Om du sätter sout:en före det att du ställer själva frågan borde du få den utskriven.
sqlsats = "UPDATE...
Ssytem.out.println("sqlsats");
executeQuery(sqlsats);
/Per-ErikSv: java + sql
Hoppas att jag inte har missuppfattat ditt svar men så här har jag gjort
min Update sats.
sqlsats="UPDATE Artikel SET Antal='"+texter[2].getText().trim()+"',"+
"artnr="+Integer.parseInt(texter [3].getText().trim())+
" WHERE Artikelnamn='"+texter[0].getText().trim()+"'";
Statement statement = connect.createStatement();
System.out.println("sqlsats="+sqlsats);
int result=statement.executeUpdate(sqlsats);
Men får fortfarande samma trevliga utskrift när jag kör denna.
/AndersSv: java + sql
Det var precis så jag menade.
Kan du köra koden eller får du fel redan när du kompilerar?
System.out.. hjälper ju inte till att fixa felet, bara att få ut sql-satsen för att felsöka.
Om du inte får ut den i logfönstret så betyder ju det att felet uppstår tidigare.
/Per-ErikSv: java + sql
>Om du inte får ut den i logfönstret så betyder ju det att felet uppstår tidigare.
Asså felet kan väl ändå inte inträffa innan executeQuery??
Databasen returnerar ju "too few parameters".
Antingen så har du för få parametrar efter where-satsen eller så har du missat något med tabellen. Typ att du försöker spara data som fältet inte accepterar eller känner igen.
Peter.Sv: java + sql+[LÖST]
Tack både Peter och Per-Erik, för tipsen.
Efter mycket svammel så är detta löst, felet låg troligtvis
i databasen.
Plus en smärre justering i update satsen.
Har nu uppdaterat mina tabeller och kolumer, så nu fungerar det.
Åter tack/ Anders