嗯,我正在做这个选择我在哪里搜索数据库中的信息。 我在Java编程,我的M中的查询是这样的:我的错误在这个查询中,我认为这是正确的,但它标记了一个错误
SELECT * FROM detalle_reserva WHERE fechaInicio='2015-08-13' AND id_mesa=4 AND periodo='comida'
和它的作品对SQLyog的,但在那一刻,我把它放到程序我得到这个:
你的SQL语法有错误;检查对应于你的MySQL服务器版本正确的语法使用手动附近“periodo =”饮食“”在1号线
我有临危3个变量,是一个功能:fechaInicio,idMesa和periodo。这是我把它放在哪一行:
this.sqlConsulta = "select * from detalle_reserva where fechaInicio="+"'"+fechaIni+"'"+"and id_mesa="+idMesa+"and periodo="+"'"+periodo+"'";
有人可以告诉我我在哪里错了吗?
这是整个功能:
public ResultSet verificar(String fechaIni,int idMesa, String periodo){
conectar();
registro=null;
try{
this.sqlConsulta = "select * from detalle_reserva where fechaInicio="+"'"+fechaIni+"'"+"and id_mesa="+idMesa+"and periodo="+"'"+periodo+"'";
PreparedStatement sentencia = conexion.prepareStatement(sqlConsulta);
// sentencia.setString(1, periodo);
registro = sentencia.executeQuery();
} catch(SQLException e){
System.out.println("Error al consultar: " + e.getMessage());
}
return registro;
}
不要使用准备好的语句(你打败了整个目的)使用'?'请持有人并绑定参数。你的字符串concatanation可能会引入错误。 – e4c5
我先用了?在where条件的每个字段上,但它是相同的,然后我尝试了这种方式,并且我没有更改它,因为您可以看到在函数内部有一个注释,其中我将语法变量,有一个,因为我删除了其他2个,但是,我试图用我遇到的问题 – lancbans
您手动输入到控制台的查询与您的代码执行的内容完全相同吗?如果您查看mysql服务器日志,您将能够看到正在执行的查询 – e4c5