La Web del Programador: Comunidad de Programadores
 
    Pregunta:  63804 - PROBLEMA EN CONSULTA MYSQL DESDE JAVA
Autor:  Damian Gonzalez
Hola, mi problema es que me da error al intentar hacer la siguiente consulta desde java para mysql. No es problema de los resulset ni nada de eso pues con otras ordenes el programa funciona correctamente. Se ve que el problema está en que no se debe de poder formular este tipo consulta de este modo por eso agradecería una alternativa.

String orden = "SELECT DNI, Nombre, Apellidos FROM (SELECT @rownum:=@rownum+1 'fila',DNI, Nombre, Apellidos from Cliente, (SELECT @rownum:=0) R ) as T1 where fila=?";
PreparedStatement ps = conexion.prepareStatement(orden);
ps.setInt(1, i);
rs=ps.executeQuery();

Esa orden directamente desde MySQL sí me funciona, evidentemente pasando un número en lugar del interrogante. Pero desde java me da el siguiente error:

java.sql.SQLException: [MySQL][ODBC 5.1 Driver][mysqld-5.1.46-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fila=1' at line 1

Por si no se entiende, lo que quiero hacer es ir obteniendo una a una las filas de una tabla que no contiene un índice por medio del entero "i" que corresponde al número de fila deseado. Si alguien conoce una alternativa que funcione le agradecería su ayuda si es necesario que copie todo el código díganlo, gracias.

  Respuesta:  MARVIN CALLEJAS
Damian:
La asignación con variables de usuario @rownum:, únicamente la puedes hacer en triggers, funciones o procedimientos almacenados. Para recuperar valores tiene que hacer algo como lo siguiente:

sqlDinamica="sentencia sql";
for(rs = stat.executeQuery(sqlDinamica); rs.next();)
{
campo1=rs.getString(1).trim();
campo2 =rs.getString(2).trim();
}

Chequeate esta dirección:
http://www.chuidiang.com/java/mysql/EjemploJava.php