這個問題與Using query_to_xml in PostgreSQL with prepared statements非常相似,但是這裏的解決方案似乎不適用於我的案例。這實際上是一個非常奇怪的情況。我有以下查詢哪些工作正常。JDBC PreparedStatement中的PostgresSQL query_to_xml
String sql = "select query_to_xml('select col1,col2,col3 FROM table where col4 = '||?||' and col5 = '||?||'', true,true,'');";
和預處理語句,如:
PreparedStatement ps0 = conn.prepareStatement(sql);
ps0.setInt(1, a);
ps0.setInt(2, b);
ResultSet rs0 = ps0.executeQuery();
但是如果我添加一個字符串參數查詢,它拋出一個錯誤。例如;
String sql = "select query_to_xml('select col1,col2,col3 FROM table where col4 = '||?||' and col5 = '||?||' and col6 = '||?||'', true,true,'');";
PreparedStatement ps0 = conn.prepareStatement(sql);
ps0.setInt(1, a);
ps0.setInt(2, b);
ps0.setString(3, c);
ResultSet rs0 = ps0.executeQuery();
拋出以下錯誤:
org.postgresql.util.PSQLException: ERROR: column "percent" does not exist
在那裏我有我的定義字符串 「C」 爲詞 「百分比」。我認爲這個問題實際上是因爲它是我傳入查詢的字符串。我還努力將百分比寫入我的where子句中,並且在準備好的語句中不包括它作爲參數,如下所示;
String sql = "select query_to_xml('select col1,col2,col3 FROM table where col4 = '||?||' and col5 = '||?||' and col6 = 'percent'', true,true,'');";
但是,它給出了以下錯誤,而不是;
org.postgresql.util.PSQLException: ERROR: syntax error at or near "percent"
我猜的解決方案可能下降到需要添加或刪除單個或雙引號的地方,但我似乎無法看到它。任何指針,將不勝感激,謝謝。
謝謝@RealSkeptic,這工作的魅力。非常感謝您的解釋。 – tasslebear