java - 如何使用准备好的语句的占位符来绑定(bind)表名的变量

标签 java

我有一个关于prepareStatement 的问题。我正在尝试构建一个查询来选择计数,但表名称不同,代码如下:

String sql = "SELECT COUNT(0) AS CNT FROM ? WHERE STUD_NM <> 'ABC' ";

String tableName;

for (int i = 0; i < studCode.size(); i++) {

    count = 0;

    tableName = "";  

    pstmt = con.prepareStatement(sql);

    pstmt.setString( 1 , "S_"+studCode.get(i));

   Syso(pstmt); // 

}

查询准备如下,

"SELECT COUNT(0) AS CNT FROM 'S_HUBRECORD' WHERE STUD_NM <> 'ABC'"

为什么表名后面要加上单引号?

最佳答案

你不能。您需要使用字符串连接来构造查询。 PreparedStatement 用于字段值,而不是表名称。它用引号括起来的原因也是因为您使用了 setString

关于java - 如何使用准备好的语句的占位符来绑定(bind)表名的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27793364/

相关文章:

java - 调用API时如何逃避空检查?

java - 模式语法异常,索引 0 附近的悬挂元字符 '+'

java - PriorityQueue的顺序错误

java - 如何修复此 jsoup 元素 nullpointerException

java - 更改 String.xml 的值

java - 如何实际使用 Swing 应用程序框架?

java - 从 Android 模拟器连接到 localhost

Java : How to sort an array of floats in reverse order?

java - 关于原语的快速问题

java - 我应该使用 Quartz XML 作业文件还是使用代码配置作业