java - PrepareStatement 错误

标签 java mysql database

我在这个函数中遇到错误,但我不知道为什么。 你能帮帮我吗?

错误在我调用 executeQuery()

的行中
public static int numeroElementi(String table) throws SQLException {

    // viene reistanziata perché questa è una funziona statica!
    String DB_URL = "jdbc:mysql://localhost:3306/kmzero";
    Connection connection = DriverManager.getConnection(DB_URL, "root", "root");

    String query = "SELECT COUNT(*) AS count FROM ? ";
    PreparedStatement pStatement = connection.prepareStatement(query);
    pStatement.setString(1, table);

    try {

        ResultSet resultSet = pStatement.executeQuery();

        try {
            if (resultSet.next())
                return resultSet.getInt("count");

            else
                return 0;

        } finally {
            resultSet.close();
        }
    } finally {
        pStatement.close();
    }
}

最佳答案

我认为您不能将 tablename(还有 columnNames)作为参数传递,此时 tableName 应该在您的字符串。

String query = "SELECT COUNT(*) AS count FROM " + table;

如果你的表需要转义,

String query = "SELECT COUNT(*) AS count FROM `" + table + "`";

关于java - PrepareStatement 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13432082/

相关文章:

php - 如何使用一个插入语句插入多个项目,同时检测唯一列是否具有重复值?

database - 在 Spring Security 中处理 DataAccessException

java - Maven 找不到符号,但独立构建有效

mysql - 如何用符号id编写请求sql

mysql - 两台不同服务器上的 mysql 和 php 中的时间

mysql - 设置TEXT的索引长度

.net - 交易和报告数据库 - 如何?

java - 为什么这段代码会产生 ArrayIndexOutOfBoundsException?

java - 未找到 Maven 依赖项 .jar 文件

java - 为什么单元格渲染器经常扩展 JLabel?