String Probleme

Dimax

Top Contributor
Guten Tag,
Ich habe ein Jobsuchprogramm gemacht.Das Programm such nach Begriffen auf verschiedenen Seiten.
Die Ergebnisse werden in der Mysql db gespeichert.Auf dem Front wird kleine Übersicht angezeigt mit Gruppierten Ergebnissen an Datum ,Name der JobBörse,und gesuchte Begriff (siehe Bild Front) und zum Schlüss ein Button mit dem Link zur Seite wo die Auswahl angezeigt wird:
Code:
out.println("<tr><td>"+rs.getString(1)+"</td><td>"+rs.getString(2)+"</td><td>"+rs.getInt(3)+"</td><td>"+rs.getString(4)+"</td><td><a href='Anzeige.jsp?datum="+rs.getString(1)+"&platform="+rs.getString(4)+"&sprache="+rs.getString(2)+"\'><input type='button' value='Anzeigen'></a></td></tr>");
Die Parameter werden richtig übertragen(kontrolliert in Adressleiste,method 'get').
Wenn ich aber c++ als Begriff auswähle und mit :
Code:
try {
    Class.forName(DRIVER);
    Connection cn =DriverManager.getConnection(  
            url,USER,PW);
    PreparedStatement st=cn.prepareStatement("SELECT * FROM projekte.projektangebote where Abrufdatum like ? and Platform like ? and Sprache like ? ;");
    st.setString(1,datum);
    st.setString(2,platform);
    st.setString(3,sprache);
    //System.out.println(sprache);
    ResultSet rs=st.executeQuery();.....
[/code]
aus der DB selektiere,bekomme ich leere Seite,weil c++ wird ohne ++ weitergeleitet.
Wie könnte mann den String so reinsetzen des der mit ++ geleitet wird. Wenn ich direct in der DB select ...like 'c++'; eingebe wird richtig selektiert.
Alle einfachen Begriffe so wie java oder Python funktionieren .

Danke im Voraus.
 

Anhänge

  • Front.png
    Front.png
    32,9 KB · Aufrufe: 24
Moin,

aus der DB selektiere,bekomme ich leere Seite,weil c++ wird ohne ++ weitergeleitet.
Wie könnte mann den String so reinsetzen des der mit ++ geleitet wird. Wenn ich direct in der DB select ...like 'c++'; eingebe wird richtig selektiert.
Sicher das die Ausdrücke, die die '?' ersetzen passend sind in Bezug auf die Hochkommata?
Lass doch mal das PreparedStatement als Text ausgeben ...

VG Klaus
 
So schaut es aus mit statement.toString();
SELECT * FROM projekte.projektangebote where Abrufdatum like '21.07.20' and Platform like 'xxx' and Sprache like 'c ' ;
Der Editor von dem Forum hat es getrimmt..also nach c kommen 2 leerzeichen
 
Sicher das 'c++' so in der Tabelle steht?
request.getParameter("sprache") sollte (soweit es man es hier beurteilen kann) ok sein ...
 
Die Ergebnisse werden in der Mysql db gespeichert.Auf dem Front wird kleine Übersicht angezeigt mit Gruppierten Ergebnissen an Datum ,Name der JobBörse,und gesuchte Begriff (siehe Bild Front) und zum Schlüss ein Button mit dem Link zur Seite wo die Auswahl angezeigt wird:
Code:
out.println("<tr><td>"+rs.getString(1)+"</td><td>"+rs.getString(2)+"</td><td>"+rs.getInt(3)+"</td><td>"+rs.getString(4)+"</td><td><a href='Anzeige.jsp?datum="+rs.getString(1)+"&platform="+rs.getString(4)+"&sprache="+rs.getString(2)+"\'><input type='button' value='Anzeigen'></a></td></tr>");
Die Parameter werden richtig übertragen(kontrolliert in Adressleiste,method 'get').
Das Problem dürfte genau an dieser Stelle liegen, ein '+' in der Url ist Sonderzeichen, kein normales Plus. Alle Parameter in der URL musst du entsprechend enkodiere, zb mit URLEncoder.
 
Also mit URLDecoder hat nicht geklappt.
Hab den Method geändert und es läuft:
Code:
out.println("<tr><td>"+rs.getString(1)+"</td><td>"+rs.getString(2)+"</td><td>"+rs.getInt(3)+
"</td><td>"+rs.getString(4)+"</td><td>
<form action='Anzeige.jsp' method='post'><input type='hidden' name='datum' value="+rs.getString(1)+">
<input type='hidden' name='platform' value="+rs.getString(4)+"><input type='hidden' name='sprache' value="+rs.getString(2)+">
<input type='submit' value='Anzeigen'></form></td></tr>");
 
Sory mrBrown war mein Fehler,geprüft->
Code:
String  sprache=URLEncoder.encode(request.getParameter("sprache"),"UTF-8");
funktioniert 100%..Danke schön.
 
Code:
String  sprache=URLEncoder.encode(request.getParameter("sprache"),"UTF-8");
funktioniert 100%..Danke schön.
Moment, das sieht wieder etwas komisch aus – Parameter, die du per GET-Request bekommst, musst du nicht noch mal enkodieren, wenn überhaupt musst du die dekodieren.
 
sollte es so aussehen? :
Code:
<a href='Anzeige.jsp?datum="+rs.getString(1)+"&platform="+rs.getString(4)+"&sprache="+URLEncoder.encode("+rs.getString(2)+","UTF-8")\'><input type='button' value='Anzeigen'></a>
und bei Auswertung
Code:
String  sprache=URLDecoder.decode(request.getParameter("sprache"),"UTF-8");
 

Neue Themen


Zurück
Oben