02. marts 2000 - 10:18
Der er
10 kommentarer og 2 løsninger
Stadig problemer med DB
Jeg får denne runtime fejl når jeg forsøger at indsætte i min DB. [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. Jeg skal have det her kode til at virke idag, er der nogen der kan hjælpe ? try { boolean space = false; String nr = CardPanel.list.getSelectedItem(); StringBuffer buffer = new StringBuffer(20); int i,j; for(i = 0,j = 1;!space;i++,j++) { if(!nr.substring(i,j).equals(" ")) { buffer.insert(i,nr.substring(i,j)); } if(nr.substring(i,j).equals(" ")) { space = true; } } nr = buffer.toString(); System.out.println(nr + " " + buffer.length());// skal væk senere //opret forbindelse Connection con = DriverManager.getConnection("jdbc:odbc:Rep"); Statement stmt = con.createStatement(); String query = "SELECT * FROM Kunder WHERE KundeNr LIKE nr"; ResultSet rs = stmt.executeQuery(query); int k = rs.getInt("KundeNr"); String f = rs.getString("Firmanavn"); String a = rs.getString("Adresse"); int p = rs.getInt("PostNr"); String b = rs.getString("Bynavn"); String t = rs.getString("Telefon"); String tf = rs.getString("Telefax"); String kp = rs.getString("KontaktPers"); String d = rs.getString("Dtlf"); String e = rs.getString("Email"); String w = rs.getString("WWW"); CardPanel.tfKundeNr.setText(Integer.toString(k)); CardPanel.tfFrmNvn.setText(f); CardPanel.tfAdr.setText(a); CardPanel.tfPstNr.setText(Integer.toString(p)); CardPanel.tfByNavn.setText(b); CardPanel.tfTlfNr.setText(t); CardPanel.tfTlfaxNr.setText(tf); CardPanel.tfKntPers.setText(kp); CardPanel.tfDirTlf.setText(d); CardPanel.tfEmail.setText(e); CardPanel.tfwww.setText(w); } catch(SQLException se) { System.err.println("Kunden blev ikke hentet."); System.out.println(se); System.exit(2); } Kobojt
Annonceindlæg fra Kingston Technology
02. marts 2000 - 13:51
#1
Jeg kan ikke se at du indsætter noget? Til gengæld er der noget galt med din SELECT: String query = "SELECT * FROM Kunder WHERE KundeNr LIKE nr"; Burde være: String query = "SELECT * FROM Kunder WHERE KundeNr LIKE " + nr; Der er tit en god ide at lave en System.out.println(query) så kan du se hvordan din SELECT ser ud og evt. prøve at køre den direkte i Access. /Jesper
02. marts 2000 - 14:08
#2
Hmm, det giver en ny fejl: [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'KundeNr LIKE'. Så det kan ikke være rigtigt ? Kobojt
02. marts 2000 - 14:24
#3
Jeg tror det er et Access kursus du efterspørger: String query = "SELECT * FROM Kunder WHERE [Kunder.KundeNr] LIKE " + nr; Som jeg skrev tidligere, så prøv at køre din query i Access i stedet for via JDBC. Hvis du ikke kan få query'en til at køre, så brug query-builder'en i Access som hjælp. /Jesper
02. marts 2000 - 15:27
#4
Min sql-sætning fejler intet, den kører fint i acces query-builder. Jeg har lært at bruge access, har du ? Kobojt
02. marts 2000 - 15:38
#5
Undskyld jeg prøver at hjælpe. Har du prøvet at skrive "query" ud på skærmen? Det lyder som om "nr" ikke indeholder det du regner med. /Jesper
02. marts 2000 - 16:59
#6
Ok ok, du lød bare meget negativ. Det har jeg prøvet og det virkede fint. Jeg er sikker på at jeg fanger det rigtige. Kobojt
02. marts 2000 - 17:20
#7
Hmmm, jeg er ved at være løbet tør for idéer. Skal du bruge LIKE? Hvis du bare slår op på et tal (kundenr) så kan du vel nøjes med at bruge '=', fx. String query = "SELECT * FROM Kunder WHERE [KundeNr]=" + nr; /Jesper
03. marts 2000 - 08:00
#8
Du kunne godt lyde so om du har fat i noget. Det prøver jeg lige. Kobojt
03. marts 2000 - 08:22
#9
Hvis jeg gør som du foreslår får jeg denne runtimefejl: [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'KundeNr ='. Jeg prøvede (...WHERE KundeNr = nr";), det resulterede i denne runtimefejl. [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. Vi må være tæt på at have været alle muligheder igennem. Du har ikke et sidste guldkorn til mig ? Kobojt
03. marts 2000 - 12:58
#10
Tjaa, jeg ved snart ikke. Jeg har antaget at KundeNr er et tal - er kolonnen defineret som "Number"? /Jesper
05. marts 2000 - 10:28
#11
det har du også ret i, det samme er gældende for postnr. Kobojt
cg
Nybegynder
06. marts 2000 - 00:37
#12
Hmmm. String query = "SELECT * FROM Kunder WHERE KundeNr LIKE nr"; Giver følgende SQL: SELECT * FROM Kunder WHERE KundeNr LIKE nr Altså "nr" og ikke indholdet af din variabel nr. Det du nok er interesseret i er noget i retning af f.eks. SELECT * FROM Kunder WHERE KundeNr = 7; Det laver du ved at skrive: String query = "SELECT * FROM Kunder WHERE KundeNr = " + nr + ";"; Læg mærke til det sidste ";", som ofte er nødvendigt. Jeg kan kun tilslutte mig jhh - Skriv query ud på skærmen. Det har ihvertfald ikke virket med den kode du listede i første indlæg. /Casper
Kurser inden for grundlæggende programmering