2016-09-09 7 views
0

Ich versuche, eine Website mit Verbindungen zu DB MySql zu schreiben und traf den nächsten Ärger - wenn ich Abfrage mit früh gebildeten String, schreibt MySql wie "Sie müssen Anführungszeichen entfernen". Ich verstehe, dass ich keine liniar Zeichenfolge DB senden, aber Objekttyp String, welche Art und Weise kann ich dieses Problem vermeiden:Entfernen Sie Zitate aus String-Abfrage JSP

<sql:setDataSource var="con" driver="com.mysql.jdbc.Driver" 
url="jdbc:mysql://localhost/PosPromo" 
user="root" password="qwerty"/> 

// here I am waiting an array of integers from another JSP page, they are ID in my DB 

<% String [] val =request.getParameterValues("aaa"); %> 
<% request.setAttribute("val",val); %> 

<%! String str=""; %> 
<% for (int j=0;j<val.length;j++){ 
    if (j==(val.length-1)){ 
     str+=" id="+String.valueOf(val[j]); 
     break; 
    } 
    str+=" id="+String.valueOf(val[j])+" OR";  
} 
%> 
<%str="SELECT * FROM action WHERE "+str+";";%> 

// here I obtain string smth like "SELECT * FROM action WHERE id=3;" which realy works in DB 

<c:set var="que" value="str"/> 

<sql:query dataSource="${con}" var="result"> 
    "${que}"; 
</sql:query> 

RUN und hier erscheinen Inschrift "Sie haben einen Fehler in der SQL-Syntax, kontrollieren das Handbuch das entspricht Ihre MySQL-Server-Version für die richtige Syntax in der Nähe zu verwenden ' "que"' at line 1"

+0

versuchen ersetzen ' "$ {que}"; 'mit' $ {que} '. Auch Ihr str wird etwas wie 'SELECT * FROM action WHERE id = 3 OR' sein –

Antwort

2

ändern Sie Ihren sQL-Tag unter:

<sql:query dataSource="${con}" var="result"> 
    ${que} 
</sql:query> 
Verwandte Themen