2

この関数でエラーが発生しましたが、理由がわかりません。手伝って頂けますか?

エラーは私が呼び出す行にあります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();
    }
}
4

1 に答える 1

7

tablename(およびcolumnNames)をパラメーターとして渡すことはできないと思います。これは、 tableNameを文字列に連結する必要があるときです。

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

テーブルをエスケープする必要がある場合は、

String query = "SELECT COUNT(*) AS count FROM `" + table + "`";
于 2012-11-17T15:44:13.713 に答える