Foros del Web » Programación para mayores de 30 ;) » Java »

error de sintaxis

Estas en el tema de error de sintaxis en el foro de Java en Foros del Web. Hola a todos. Mi duda es la siguiente: Estoy ejecutando una consulta a una base de datos con jdbc y tengo lo siguiente: Connection conexion; ...
  #1 (permalink)  
Antiguo 24/05/2004, 04:34
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Sonrisa error de sintaxis

Hola a todos. Mi duda es la siguiente:

Estoy ejecutando una consulta a una base de datos con jdbc y tengo lo siguiente:

Connection conexion;
String tabla="servidores";
PreparedStatement consulta=conexion.prepareStatement("LOCK TABLES ? WRITE");
consulta.setString(1,tabla);
consulta.executeQuery();

Cuando ejecuto el programa este java me sale el siguiente error:

Syntax error or access violation, message from server:"you have an error in your sql syntax near '' servidores' WRITE

En cambio si pongo lo anterior de la siguiente manera:

consulta=conexion.prepareStatement("LOCK TABLES servidores WRITE");

entonces no me falla.

ES DECIR, si añado parametro a la consulta(con ?) entonces me falla pero si pongo directamente el valor de dicha variable me funciona perfectamente.

¿alguien sabe porque puede ser esto?

Un saludo.
  #2 (permalink)  
Antiguo 24/05/2004, 09:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Creo que es porque cuando haces un setString, java concatena dos comillas simples. Es decir la consultas que estarías ejecutan sería LOCK TABLES 'servidores' WRITE.
En vez de utilizar un PreparedStatement podrías utilizar un Statement haciendo lo siguiente:
Statement consulta=conexion.createStatement();
consulta.executeQuery("LOCK TABLES "+tabla+" WRITE");

Espero que te funcione
  #3 (permalink)  
Antiguo 24/05/2004, 10:01
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Gracias belferal por responder. He hecho lo que me has comentado y funciona, asi que muchas gracias por tu ayuda.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:25.