我试图通过java程序执行查询,但它没有执行。这是方法
public List<Usuario> darProveedores() throws Exception{
PreparedStatement st=null;
ArrayList<Usuario> respuesta = new ArrayList<Usuario>();
String consulta ="SELECT u.direccion_electronica AS dirE, "
+ "u.login AS login, "
+ "u.palabra_clave AS clave, "
+ "u.rol AS rol, "
+ "u.tipo_persona AS tipoPer, "
+ "u.documento_identificacion AS docID, "
+ "u.nombre AS nombre, "
+ "u.nacionalidad AS naci, "
+ "u.direccion_fisica AS dirF, "
+ "u.telefono AS tel, "
+ "u.ciudad AS ciudad, "
+ "u.departamento AS depto, "
+ "u.codigo_postal AS codPostal "
+ " FROM usuarios u "
+ " WHERE u.rol='Proveedor' ";
try{
iniTemp();
establecerConexion(cadenaConexion, usuario, clave);
st = conexion.prepareStatement(consulta);
ResultSet r= st.executeQuery(consulta);
while(r.next()){
String dirE= r.getString("dirE");
String login = r.getString("login");
String clave = r.getString("clave");
String rol = r.getString("rol");
String tipoPer = r.getString("tipoPer");
String docID = r.getString("docID");
String nombre = r.getString("nombre");
String naci = r.getString("naci");
String dirF = r.getString("dirF");
String tel= r.getString("tel");
String ciudad = r.getString("ciudad");
String depto = r.getString("depto");
String codPostal = r.getString("codPostal");
Usuario u = new Usuario(login, dirE, clave, rol, tipoPer, Integer.parseInt(docID), nombre, naci, dirF, Integer.parseInt(tel), ciudad, depto, Integer.parseInt(codPostal));
respuesta.add(u);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
if (st != null)
{
try {
st.close();
} catch (SQLException exception) {
throw new Exception("ERROR: ConsultaDAO: loadRow() = cerrando una conexion.");
}
}
closeConnection(conexion);
}
return respuesta;
}
我已经在SQL Developer上执行了查询,它返回一个包含值的表,但是什么时候 我通过这里执行while(r.next())指令说答案中没有行
答案 0 :(得分:1)
没有参数时,您不需要使用PreparedStatement
。只需使用Statement
代替PreparedStatement
,然后st = conexion.createStatement()
即可创建它。