我有5或表的表從\如何在SELECT查詢中使用動態表名使用JDBC
我的語法查詢我喜歡這個
String sql2 = "SELECT * FROM ? WHERE Patient_ID = ?";
pst = conn.prepareStatement(sql2);
System.out.println("SQL before values are set "+sql2);
System.out.println("The values of table/test name recieved in TestPrint stage 1 "+tblName);
System.out.println("The values of test name recieved in TestPrint stage 1 "+key);
// values are outputted correctly but are not getting set in the query
pst.setString(1, tblName);
pst.setLong(2, key);
ResultSet rs2 = pst.executeQuery(sql2);
while(rs2.next()){
String ID = rs2.getString("ID");
jLabel35.setText(ID);
jLabel37.setText(ID);
jLabel38.setText(ID);
// them print command is initiated to print the panel
}
問題是,當我運行此我得到一個錯誤說「.....你有和SQL語法錯誤附近?WHERE Patient_ID =?」
當我輸出使用System.out.println(SQL2)的sql;當您準備的一份聲明
值不會在SQL2
mysql佔位符只能替換VALUES。你不能使用表/字段名稱或其他sql「meta」指令的佔位符。例如'sql ='? ? ? ? - >'select','*','from','mytable'是完全非法的。這四件事中沒有一件是支持VALUE –
那麼,Marc-B會是什麼樣的出路。感謝您的及時回覆 – Nawaz