2015-08-16 189 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

相關問題