Avatar billede samuelsen Nybegynder
30. marts 2004 - 09:55 Der er 18 kommentarer

sql-forespørgsel - update

Hej Eksperter!

Jeg har et problem med en SQL-update kommando, nedenstående kode udfører en exception, og derved bliver data ikke opdateret i tabellen. Databasen er en C5 native database, som umiddelbart minder om en MS-Access database. Feltnavne og tabelnavne er rigtige, altså DebKart og Navn, Adresse1, samt Konto feltet.

q1=db.prepareStatement("UPDATE DebKart SET Navn ='Ole','Adresse1='Smedeland 7' WHERE Konto ='"+p.getKonto()+"'");
q1.executeUpdate();

Håber på at høre fra jer
Samuelsen
Avatar billede arne_v Ekspert
30. marts 2004 - 10:23 #1
Hvilken exception ?

Og hvorfor PreparedStatement uden spørgsmålstegn ?
Avatar billede samuelsen Nybegynder
30. marts 2004 - 10:26 #2
Hej Arne! Hvordan ser jeg hvilken exception - jeg har jo grebet den i en try / catch..
Hvorfor skal der spørgsmålstegn i en PreparedStatement? Det plejer jeg da aldrig, kan jeg lave updatekaldet uden en proparedstatement?
Avatar billede arne_v Ekspert
30. marts 2004 - 11:12 #3
Brug:

} catch(SQLException ex) {
  ex.printStackTrace();
}
Avatar billede arne_v Ekspert
30. marts 2004 - 11:13 #4
Statement stmt = sb.createStatement();
stmt.executeUpdate("UPDATE ...");

bør virke.
Avatar billede arne_v Ekspert
30. marts 2004 - 11:14 #5
Men PreparedStatement er faktisk udmærkede men de er tiltænkt at blive brugt som:

q1=db.prepareStatement("UPDATE DebKart SET Navn ='Ole','Adresse1='Smedeland 7' WHERE Konto = ?");
q1.setString(1, p.getKonto());
q1.executeUpdate();
Avatar billede samuelsen Nybegynder
30. marts 2004 - 11:16 #6
smart - jeg kigger lidt på det, hvad ville du foretrække at bruge?
Avatar billede arne_v Ekspert
30. marts 2004 - 11:22 #7
PreparedStatement

Bl.a. fordi du med ? og setString ikke har problemer med værdier som
inderholder ' tegnet.
Avatar billede arne_v Ekspert
30. marts 2004 - 11:23 #8
Men prøv at udskrive din exception så kan du sikkert finde dit egentlige problem.
Avatar billede samuelsen Nybegynder
30. marts 2004 - 11:27 #9
Jeg får flg. fejl, og det gør jeg lige gyldigt hvilke en af metoderne jeg vælger..
Der kommer en dialogboks frem med flg titel: Assertion Error:
"Yes to invoke debugger, Cancel if debugger already runnung, No to ignore.
Unique index contains dublicate values, or ordered index contains values out of order."
Umiddelbart bliver værdierne opdateret fint i tabellen hvis jeg vælger nej / ignore til dialogboksen, men det er jo ikke helt godt at denne boks fremkommer....Ved du hvorfor? eller hvordan jeg kan "fjerne" boksen?
Avatar billede arne_v Ekspert
30. marts 2004 - 11:51 #10
Lyder som om du skal snakke med det firma der har leveret driveren.
Avatar billede samuelsen Nybegynder
30. marts 2004 - 11:53 #11
øv - jamen driveren er den ganske almindelige JDBC-ODBC som følger med Tomcat...
Avatar billede arne_v Ekspert
30. marts 2004 - 11:57 #12
Det er næppe den. Det må være selve ODBC driveren.
Avatar billede arne_v Ekspert
30. marts 2004 - 11:57 #13
Den popup kommer fra native kode.
Avatar billede samuelsen Nybegynder
30. marts 2004 - 12:00 #14
hmm - øv
Avatar billede samuelsen Nybegynder
31. marts 2004 - 10:23 #15
Hej Arne!

Jeg fik min sql-update til at virke i går, jeg havde et problem med where like sætningen, åbenbart er mine odbc-driver utroligt forfængelig (kunne ikke forstå LIKE men like og slet ikke = så gik det helt galt) Mit forhåbentlige sidste problem er at min webserver(tomcat5) brager ned, når der kommer for mange uafsluttede forespørgsler til databasen. Jeg har prøvet som du foreslog at ændre Maxactive connection i server.xml til "1" men det hjælper heller ikke. Jeg benytter også finally{...} hvor jeg lukker alle mine connections, db, og rs. Så jeg syntes jeg har prøvet lidt af hvert, men det virker simpelthen ikke, har du nogle forslag?

På forhånd tak for hjælpen.
Samuelsen
Avatar billede samuelsen Nybegynder
31. marts 2004 - 10:54 #16
hej igen!
Jeg kan se at jeg får exceptions hver gang jeg forsøger at lukket et statement . altså stmt.close();
Avatar billede arne_v Ekspert
31. marts 2004 - 12:40 #17
Hvad med at bruge et almindeligt Statement og så genbruge det samme
om og om igen uden at lukke det ?

[grimt men hvad pokke rgør man ikke for at få det til at virke]
Avatar billede samuelsen Nybegynder
31. marts 2004 - 12:43 #18
ikke forstået  - kan jeg få et eksempel...
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