如何在使用JDBC的SELECT查询中使用动态表名

我有5个表或表要从\查询

我的语法我喜欢这样

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中设置

回答:

当您准备一条语句时,数据库将构造一个执行计划,如果表不存在,则该计划无法执行。换句话说,Placehodlers只能用于

,而不能用于对象名称或保留字。在这种情况下,您将不得不依靠Java来构造您的字符串:

String sql = "SELECT * FROM `" + tblName + "` WHERE Patient_ID = ?";

pst = conn.prepareStatement(sql);

pst.setLong(1, key);

ResultSet rs = pst.executeQuery(sql);

以上是 如何在使用JDBC的SELECT查询中使用动态表名 的全部内容, 来源链接: utcz.com/qa/411184.html

回到顶部