2015-08-16 187 views
0

嗯,我正在做这个选择我在哪里搜索数据库中的信息。 我在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; 
} 
+1

不要使用准备好的语句(你打败了整个目的)使用'?'请持有人并绑定参数。你的字符串concatanation可能会引入错误。 – e4c5

+0

我先用了?在where条件的每个字段上,但它是相同的,然后我尝试了这种方式,并且我没有更改它,因为您可以看到在函数内部有一个注释,其中我将语法变量,有一个,因为我删除了其他2个,但是,我试图用我遇到的问题 – lancbans

+0

您手动输入到控制台的查询与您的代码执行的内容完全相同吗?如果您查看mysql服务器日志,您将能够看到正在执行的查询 – e4c5

回答

0

你有没有偶然忘记拷贝分号或故意不也有吗?有时你可以省略分号;但是,如果系统变得困惑,这很重要。

SELECT * FROM detalle_reserva WHERE fechaInicio='2015-08-13' AND id_mesa=4 AND periodo='comida'; 
+0

我这样做的目的,我没有问题在sqlyog上执行查询,问题是现在我尝试在程序中做选择。 查询在sqlyog中使用或不使用分号运行 – lancbans

相关问题