我在从其他表中获取数据时遇到了问题。 我正在使用 Java preparedStatements 和 mySQL。
这是我的 sql 查询:
String sql = "SELECT alumno.nombre, alumno.apellido, curso.nombre, aula.numero FROM "+
"((alumno INNER JOIN curso ON alumno.id_curso = curso.id_curso) "+
"INNER JOIN aula ON alumno.id_aula = aula.id_aula) "+
"WHERE (alumno.nombre=? "+
"OR alumno.apellido=?) "+
"OR curso.nombre=? "+
"OR aula.numero=?;";
我收到此错误:错误:未找到“curso”列。
。当我使用点 (.) 符号访问 curso
表时,为什么要尝试获取列。我是 Java-mySQL 的新手。
这是我的java代码:
try{
conn = Conexion.connect();
stm = conn.prepareStatement(sql);
stm.setString(1, "Diego");
stm.setString(2, "Rios");
stm.setString(3, "Informatica");
stm.setString(4, "202");
rs = stm.executeQuery();
System.out.println(stm);
while(rs.next()){
String nombre = rs.getString("nombre");
String apellido = rs.getString("apellido");
String curso = rs.getString("curso");
String aula = rs.getString("aula");
System.out.println(nombre);
System.out.println(apellido);
System.out.println(curso);
System.out.println(aula);
a.setNombre(nombre);
a.setApellido(apellido);
a.setCurso(curso);
a.setAula(aula);
lista.add(a);
}
} catch (Exception e){
System.out.println("Error :"+e.getMessage());
} finally {
if(stm != null){
try {
stm.close();
} catch (SQLException ex) {
Logger.getLogger(AlumnoDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException ex) {
Logger.getLogger(AlumnoDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
PS:它在 mySQL-workbench 中工作。
谢谢!
最佳答案
我建议将查询写成:
SELECT a.nombre, a.apellido, c.nombre, au.numero
FROM alumno a INNER JOIN
curso c
ON a.id_curso = c.id_curso INNER JOIN
aula au
ON a.id_aula = au.id_aula
WHERE a.nombre = ? OR
a.apellido = ? OR
c.nombre = ? OR
au.numero = ?
但是,我看不出使用别名、删除括号或删除分号会如何导致您看到的错误。一种可能是 SELECT
或 WHERE
子句中的无效字符,一个不可见的字符。
编辑:
我认为你的问题是这段代码:
String curso = rs.getString("curso");
没有名为 curso
的输出列。这可以在 select
中修复:
SELECT a.nombre, a.apellido, c.nombre as curso_nombre, au.numero
然后使用:
String curso = rs.getString("curso_nombre");
关于java - 从其他表获取数据的错误sql语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134723/