嗯,我正在做這個選擇我在哪裏搜索數據庫中的信息。 我在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