Avatar billede funkoo Nybegynder
28. september 2001 - 13:26 Der er 25 kommentarer og
1 løsning

parameteroverførelse

Hej.
Historie:
Jeg skal lave en søgning. I soeg.jsp indtastes søgekriteriere. så kommer man til findbruger.jsp som skal bruge en bean til at udtrække søgedata. Her kommer et udsnit fra findbruger.jsp:
<%@ page language=\"java\"
    import=\"java.sql.*, java.io.*, java.util.*\"
    errorPage=\"error.jsp\" %>

<jsp:useBean id=\"bruger\" class=\"com.databases.Bruger\"/>
<html>
-
-
<%
String Id =  request.getParameter(\"id\");
String Navn = request.getParameter(\"navn\");
String tlf = request.getParameter(\"tlfnr\");

bruger.connect();
ResultSet rs = bruger.viewBruger(Id, Navn, tlf);

while (rs.next()) {%>
<tr>
<td><%= rs.getString(\"ID\") %></td>
<td><%= rs.getString(\"NAVN\") %></td>
<td><%= rs.getString(\"TLF\") %></td>
<%}%>

i bruger.java :

public ResultSet viewBruger(String Id, String Navn, String tlf) throws SQLException,
Exception {
    ResultSet rs = null;
    try  {
      String queryString = (\"SELECT ID, NAVN TLFNR FROM bruger WHERE ID =\'\" + Id + \"\' OR NAVN = \'\" + Navn + \"\' OR TLF = \'\" + tlf + \"\'\");
      Statement stmt = con.createStatement();
      rs = stmt.executeQuery(queryString);
    } catch (SQLException sqle) {
      error = \"SQLException: Could not execute the query.\";
      throw new SQLException(error);
    } catch (Exception e) {
      error = \"An exception occured while retrieving projekt.\";
      throw new Exception(error);
    }
    return rs;
  }

Fejlen er:
java.sql.SQLException: SQLException: Could not execute the query.

Avatar billede erikjacobsen Ekspert
28. september 2001 - 13:31 #1
Mon id ikke er et tal? Så skal du bare:

(\"SELECT ID, NAVN TLFNR FROM bruger WHERE ID =\" + Id + \" OR NAVN = \'\" + Navn + \"\' OR
                  TLF = \'\" + tlf + \"\'\");
Avatar billede funkoo Nybegynder
28. september 2001 - 13:42 #2
Godt set, men problemet er stadig ikke løst.

Avatar billede funkoo Nybegynder
28. september 2001 - 13:49 #3
Jeg har lige været inde og ændret i findbruger.jsp
hvor id er:
String Id =  request.getParameter(\"id\");
har jeg skrevet:
int id = Integer.parseInt(request.getParameter(\"id\"));
Desuden har jeg også ændret de andre steder med ID.
Men der kommer de samme fejl ud!!
Avatar billede disky Nybegynder
28. september 2001 - 14:22 #4
Din exception handling er ret speciel.

prøv at indfør en:

sqle.printStackTrace(System.out);

i din SQLException og fortæl hvad den siger.
Avatar billede funkoo Nybegynder
28. september 2001 - 14:28 #5
Du vil have at jeg skal skrive
  -
  -
  Statement stmt = con.createStatement();
  rs = stmt.executeQuery(queryString);
  } catch (SQLException sqle) {
-->  sqle.printStackTrace(System.out);  HER??
  error = \"SQLException: Could not execute the query.\";
      throw new SQLException(error);
    } catch (Exception e) {
      error = \"An exception occured while retrieving projekt.\";
      throw new Exception(error);
    }
    return rs;
  }

Avatar billede disky Nybegynder
28. september 2001 - 14:29 #6
korrekt
Avatar billede erikjacobsen Ekspert
28. september 2001 - 14:30 #7
Om du lader Java-variablen være et tal eller en streng er ret ligegyldigt.
Det er de to enkelt-stroffer rundt om tallet, som SQL-en nok ikke kan lide.

Du kan måske også få mere at vide med

error = \"SQLException: Could not execute the query: \"+sqle;
Avatar billede disky Nybegynder
28. september 2001 - 14:31 #8
hvis man vil have brugbar information om en exception skal man lave en stackTrace på den
Avatar billede funkoo Nybegynder
28. september 2001 - 14:31 #9
Jeg har skrevet sætningen
Statement stmt = con.createStatement();
      rs = stmt.executeQuery(queryString);
-->  sqle.printStackTrace(System.out);
    } catch (SQLException sqle)

Men så kommer fejlmeddelsen:
Undefined variable or class name: sqle
      sqle.printStackTrace(System.out);
     
Avatar billede disky Nybegynder
28. september 2001 - 14:34 #10
og så skal du huske i din SQL query at have former for text inkapslet i \'\' og tal uden

Konverter dem evt. først til de korrekte java typer.
Avatar billede funkoo Nybegynder
28. september 2001 - 14:37 #11
Du har ret Erik. Man får en bedre fejlemeddelse med :
error = \"SQLException: Could not execute the query: \"+sqle;
Fejlmeddelsen siger nu at den ikke kender Navn, efter at jeg har søg på ID.
Hvordan skal SQL sætningen være?
Avatar billede disky Nybegynder
28. september 2001 - 14:43 #12
Hvordan ser din database ud ?

Avatar billede funkoo Nybegynder
28. september 2001 - 14:47 #13
Brugertabllen er en del af en større database selve indholdet af brugertabellen er:

create table BRUGER(
ID integer not null,
NAVN varchar(40) not null,
INITIALER varchar(10) not null,
EMAIL varchar(60),
TLF integer,
AFDELING varchar(20),
primary key(LOENID));
Avatar billede disky Nybegynder
28. september 2001 - 14:51 #14
da ID er en integer skal der ikke \'\' rundt om
det samme gælder TLF
Avatar billede funkoo Nybegynder
28. september 2001 - 14:53 #15
Ja det er rigtigt. Jeg har fået det ændret!
Avatar billede disky Nybegynder
28. september 2001 - 14:56 #16
hvad er den helt nøjagtige fejlmeddelelse.

Og kan vi lige få det stacktrace ?
Avatar billede funkoo Nybegynder
28. september 2001 - 14:57 #17
Tak, tak.
Hvordan kan jeg jeg tildele point til 2? 20 point til Disky og 25 til Erik!
Avatar billede erikjacobsen Ekspert
28. september 2001 - 15:11 #18
Hovsa, du manglede jo et komma i
SELECT ID, NAVN TLFNR FROM
skal jo være
SELECT ID, NAVN, TLFNR FROM
Avatar billede disky Nybegynder
28. september 2001 - 15:13 #19
du vælger bare avanceret point uddeling
Avatar billede funkoo Nybegynder
28. september 2001 - 15:24 #20
Hvor gør jeg det henne?
Avatar billede funkoo Nybegynder
28. september 2001 - 15:25 #21
Erik kan du ikke lige sende en besked som \"svar\"!
Tak
Avatar billede disky Nybegynder
28. september 2001 - 15:26 #22
jeg mener der er en avanceret knap et sted på siden.
Avatar billede funkoo Nybegynder
28. september 2001 - 15:31 #23
Hvordan laver jeg så en outer Join på flere tabeller?
f.eks på den sætning (på mysql):
select id, navn, gade, sport from bruger, adresse, hobby where BRUGERID=ADRESSEID AND BRUGERID=HOBBYID AND NAVN=\"HANS\";
Avatar billede funkoo Nybegynder
28. september 2001 - 15:41 #24
Nå men jeg kan ikke vente længere Erik,
Derfor giver jeg alle mine point til Disky.
Tak for hjælpen begge to, det var en fornøjelse. Desuden, Disky! Resin understøtter ikke EJB.
Avatar billede disky Nybegynder
28. september 2001 - 15:43 #25
Tak for point.

Resin understøtter EJB kig på www.caucho.com
Avatar billede funkoo Nybegynder
28. september 2001 - 16:08 #26
Disky,
Jeg har lige været inde og læst det. Okay du har ret. Skal det så betyde at jeg skal hente resin-cmp-filen? Og skal jeg installere den oven på resin eller hvad?
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