PreparedStatement 不能用?代替表名的原因
写了一串查看表结构的代码,但一直报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
PreparedStatement preparedStatement = connection.prepareStatement("DESC ? ");
preparedStatement.setString(1, tableName);
//System.out.println(preparedStatement.toString());
System.out.println(preparedStatement.execute());
但是用字符串直接拼接就会正常运行,于是我就直接把preparedStatement.toString()输出,看看改完之后是什么样子。
发现代替 ? 的string都是用‘ ’单引号包裹着,导致sql认为我的表名是个参数,所以报错。
以此记录自己jdbc过程中的小过程,亦愿为困惑着的小学弟们解惑。敲代码多注意一些小细节会节省更多的时间。