2011-07-06 9 views
5

Tengo la siguiente sintaxis en mi código, pero no funciona cuando intento usar el operador LIKE en JDBC. Trabaja muy bien de esta manera, cuando es exactamente igual:¿Cómo usar MySQL como operador en JDBC?

ResultSet resultSet = statement.executeQuery("SELECT * 
               FROM drawings 
               WHERE name = '"+ DT +"'"); 

Pero si quiero usar el operador LIKE a buscar como un comodín, sigo obteniendo el error diciendo que "%" no es un carácter válido . ¿Cómo puedo usar correctamente el operador LIKE?

+0

No me digas que estás ejecutando consultas desde tu página JSP. – Jacob

+0

¿Cómo es tu consulta LIKE? –

+0

query = ("SELECCIONAR * FROM dibujos WHERE nombre LIKE '"% DT% "'"); – Sheeyla

Respuesta

15

De los comentarios:

query=("SELECT * FROM drawings WHERE name LIKE '"%DT%"'"); 

Esto no compila. Suponiendo que DT es una variable, entonces es más bien debe ser similar

query = "SELECT * FROM drawings WHERE name LIKE '%" + DT + "%'"; 

(prestar atención a la sintaxis que destaca, la % tiene que ser parte de la cadena SQL!)

Sin embargo, el usuario concatenando -las variables de cadena controladas así en una consulta SQL pone puertas ancho abierto para SQL injectionSQL injectionattacks exitoso. Learn cómo usar PreparedStatement y usarlo en su lugar.

String sql = "SELECT * FROM drawings WHERE name LIKE ?"; 
// ... 
preparedStatement = connection.prepareStatement(sql); 
preparedStatement.setString(1, "%" + DT + "%"); 
resultSet = preparedStatement.executeQuery(); 
// ... 
+2

Muchas gracias Balus ... ahora entendí tu comentario sobre el JSP ... Definitivamente tomaría esto en cuenta y evitaría usar las etiquetas equivocadas en mis preguntas ... muchas gracias de nuevo, tu respuesta resolvió un problema que tuve para 2 días, y estoy implementando preparado Estado también. Saludos – Sheeyla