当我尝试执行此语句时,我收到了错误。我创建了一个包含表名的数组mem[]
,每个表中有两列名为amt(float(9,2))
和comb(varchar(5))
的列。
我在for循环中使用了这个语句:
PreparedStatement pst =con.prepareStatement("select sum(amt) from ? where comb = ?");
pst.setString(1,mem[i]);
pst.setString(2, "all");
错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在''akhil'附近使用正确的语法,其中第1行为comb ='all''
在akhil附近的错误描述和所有一方,它显示单引号和其他方双引号。为什么会这样显示? 究竟是什么错误?
答案 0 :(得分:1)
PreparedStatement
中的参数无法替换表名或列名。他们只能取代价值观。您需要为每个表单独PreparedStatement
。