在 JDBC 中,PreparedStatement 類別提供了一種使用動態值執行 SQL 查詢的方法。但是,使用列名作為輸入參數是有限制的。
是否可以將列名作為PreparedStatement的輸入參數傳遞?
不可以,JDBC 不允許將列名設為PreparedStatements 的輸入參數。 ReadyStatements 設計為僅接受值,而不接受列名稱等元資料。
考慮以下範例:
表格:
表A:屬性X 其他
表A:屬性X
其他表B:屬性 Y其他
PreparedStatement statement = connection.prepareStatement("SELECT * FROM A, B WHERE \"A\".\"X\" = ?"); statement.setString(1, "B"."Y"); // Attempting to set column name as parameter ResultSet resultSet = statement.executeQuery(); // Returns empty result set
嘗試使用列名稱作為參數
:String query = "SELECT * FROM A, B WHERE " + columnName + " = ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, value); // Setting value for input parameter ResultSet resultSet = statement.executeQuery(); // Returns non-empty result set
以上是JDBCPreparedStatement 可以處理動態列名作為輸入參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!