29. februar 2000 - 12:21
Der er
9 kommentarer og 1 løsning
Insert into table
Im having trouble inserting data into my database, can anybody tell me what Im doing wrong ? public static String dbGem() //indsæt { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException cnfe) { System.err.println("JDBC-ODBC driver kunne ikke findes."); } if(CardPanel.currentCard == CardPanel.P0) { try { //opret forbindelse Connection con = DriverManager.getConnection("jdbc:odbc:Rep"); Statement stmt = con.createStatement(); //indsæt data i tabel stmt.executeUpdate("INSERT INTO kunder (" + "KundeNR, Firmanavn, Adresse, " + "PostNR, Bynavn, Telefon, Telefax, " + "Kontaktpers, Dtlf, Email, WWW) " + "VALUES ('" + CardPanel.tfKundeNr.getText() + "', '" + CardPanel.tfFrmNvn.getText() + "', '" + CardPanel.tfAdr.getText() + "', '" + CardPanel.tfPstNr.getText() + "', '" + CardPanel.tfByNavn.getText() + "', '" + CardPanel.tfTlfNr.getText() + "', '" + CardPanel.tfTlfaxNr.getText() + "', '" + CardPanel.tfKntPers.getText() + "', '" + CardPanel.tfDirTlf.getText() + "', '" + CardPanel.tfEmail.getText() + "', '" + CardPanel.tfwww.getText() + "')"); //String updateString = "UPDATE kunder"; //WHERE KundeNR LIKE kunde System.out.println("Kunde oprettet(opdateret)."); } catch(SQLException se) { System.err.println("Kunden blev ikke oprettet."); System.out.println(se); System.exit(2); } } else if(CardPanel.currentCard == CardPanel.P1) { String kunde = CardPanel.tfRKundeNr.getText(); String firma = CardPanel.tfRFrmNvn.getText(); String modtag = CardPanel.tfModtIni.getText(); String fejl = CardPanel.taBox1.getText(); String lev = CardPanel.tfLevTid.getText(); String afh = CardPanel.tfOenAfh.getText(); //String pc = CardPanel.tfPcSeNr.getText(); String pcliste = CardPanel.taBox2.getText(); String uarb = CardPanel.taBox3.getText(); String matforb = CardPanel.taBox4.getText(); try { //opret forbindelse Connection con = DriverManager.getConnection("jdbc:odbc:Rep"); Statement stmt = con.createStatement(); //indsæt data i tabel stmt.executeUpdate("INSERT INTO Rapport VALUES (modtag, fejl, lev, afh, pc, pcliste, uarb, matforb)"); String updateString = "UPDATE Rapport WHERE KundeNR LIKE kunde"; System.out.println("Rapport oprettet(opdateret)."); } catch(SQLException se) { System.err.println("Rapporten blev ikke oprettet."); System.exit(2); } }return "Test"; Kobojt
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
29. februar 2000 - 12:54
#1
A SQL insert statement should look like this: INSERT INTO {table} ({field11}, {field2}) VALUES ({value1}, {value2}); In your first one you specify the fieldnames as values contained within quoates like: ("INSERT INTO kunder (" + "KundeNR, Firmanavn, Adresse, " + "PostNR, Bynavn, Telefon, Telefax, " + "Kontaktpers, Dtlf, Email, WWW) " + "VALUES ('" + this should be: Insert into kunder (Kundenr,Firmanavn,Adresse, Postnr, ..) values (CardPanel.tfKundeNr.getText() + ","+...) And the other one should be stmt.executeUpdate("INSERT INTO Rapport (field1, field2,..) VALUES (modtag, fejl, lev, afh, pc, pcliste, uarb, matforb)"); And I am a little confused about the Update statemnent follwing this line. Are you trying to insert values into a existing record (by inserting values into a record you are updating) ? If so, this is not the way to do it. You should use "UPDATE Rapport (field,..) using values(xx,..) where kundern like kunde"
01. marts 2000 - 11:02
#2
Hi sjensen rent faktisk prøver jeg på at gøre begge dele, i første omgang er det dog kun insert funktionen jeg vil have til at virke. Når jeg kører programmet for jeg følgende runtimefejl: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. Kobojt
01. marts 2000 - 11:15
#3
"Data type mismatch in criteria expression" er fordi du angiver feltnavnene som en lang streng omgivet af anførselstegn: "KundeNR, Firmanavn, Adresse, " + "PostNR, Bynavn, Telefon, Telefax, " + "Kontaktpers, Dtlf, Email, WWW) " + Skriv det istedet sådan som jeg angav i mit første svar: Insert into kunder (Kundenr,Firmanavn,Adresse, Postnr, ..) values (CardPanel.tfKundeNr.getText(),..) og fjern anførselstegnene. Det er dem der driller.
01. marts 2000 - 12:35
#4
Det kan jeg simpelthen ikke få til at virke. stmt.executeUpdate(INSERT INTO kunder (KundeNR, Firmanavn, Adresse, PostNR, Bynavn, Telefon, Telefax, Kontaktpers, Dtlf, Email, WWW) + "VALUES (int a = Integer.parseInt(CardPanel.tfKundeNr.getText()) +","+ CardPanel.tfFrmNvn.getText()+","+CardPanel.tfAdr.getText()+","+ int d = Integer.parseInt(CardPanel.tfPstNr.getText())+","+ CardPanel.tfByNavn.getText()+","+ CardPanel.tfTlfNr.getText()+","+ CardPanel.tfTlfaxNr.getText()+","+ CardPanel.tfKntPers.getText()+","+ CardPanel.tfDirTlf.getText()+","+ CardPanel.tfEmail.getText()+","+ CardPanel.tfwww.getText())"); Kompileringsfejl: DBForb.java:178: ')' expected. stmt.executeUpdate(INSERT INTO kunder (KundeNR, Firmanavn, Adresse, PostNR, Bynavn, Telefon, Telefax, Kontaktpers, Dtlf, Email, WWW) + Kobojt
01. marts 2000 - 15:41
#5
Ok, sjensen nu har jeg brugt et par timer på det og nu får jeg denne helt nye runtimefejl: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement. Kobojt
01. marts 2000 - 15:50
#6
ohh jo, koden ser nu sådan ud. stmt.executeUpdate("INSERT INTO kunder (KundeNR, Firmanavn, Adresse, PostNR, Bynavn, Telefon, Telefax, Kontaktpers, Dtlf, Email, WWW" + "VALUES (int a = Integer.parseInt(CardPanel.tfKundeNr.getText()), CardPanel.tfFrmNvn.getText(), CardPanel.tfAdr.getText(), int d = Integer.parseInt(CardPanel.tfPstNr.getText()), CardPanel.tfByNavn.getText(), CardPanel.tfTlfNr.getText(), CardPanel.tfTlfaxNr.getText(), CardPanel.tfKntPers.getText(, CardPanel.tfDirTlf.getText(), CardPanel.tfEmail.getText(), CardPanel.tfwww.getText())");
01. marts 2000 - 16:05
#7
Der er stadig et problem: Der mangler en parantes og et mellemrum mellem www og anførselstegnet. Sådan: .., WWW) " + "VALUES (... Højreparantesen bruges til at afslutte listen af feltnavne og mellemrummet til at sikre at den færdige streng der kaldes med har afstend mellem strengen og ordet "values"
01. marts 2000 - 16:28
#8
sjensen, kan jeg ikke få dig til at lave sætningen, jeg har stirret mig blind på det. Kobojt
01. marts 2000 - 16:43
#9
Prøv denne: stmt.executeUpdate("INSERT INTO kunder (KundeNR, Firmanavn, Adresse, PostNR, Bynavn, Telefon, Telefax, Kontaktpers, Dtlf, Email, WWW) VALUES (CardPanel.tfKundeNr.getText(), CardPanel.tfFrmNvn.getText(), CardPanel.tfAdr.getText(), CardPanel.tfPstNr.getText(), CardPanel.tfByNavn.getText(), CardPanel.tfTlfNr.getText(), CardPanel.tfTlfaxNr.getText(), CardPanel.tfKntPers.getText(, CardPanel.tfDirTlf.getText(), CardPanel.tfEmail.getText(), CardPanel.tfwww.getText())"); nb! De 2 felter du har hvor du har Integer.parseint() funktionen har du skrevet int a eller d = integer.parse.. Hvis de skal være integers, så skriv dem uden "int x =" delen, således Integer.parseInt(CardPanel.tfKundeNr.getText()), og Integer.parseInt(CardPanel.tfPstNr.getText()),
01. marts 2000 - 17:42
#10
TAK! Endenlig fungerer det. Kobojt
Kurser inden for grundlæggende programmering