Java 转义表SQL查询中的单引号
使用Java 转义表SQL查询中的单引号,java,jdbc,Java,Jdbc,使用java.sql.Preparedstatement意味着将在解析查询时对字符进行转义,当我的数据中有单引号时也会发生这种情况,但当我的表名本身有单引号时,查询不起作用(我使用的是Oracle 11g) 这是我的密码: Class.forName("oracle.jdbc.OracleDriver"); con = DriverManager.getConnection( "jdbc:oracle:thin:client/adept@ind-db-02:1521:ind02");
java.sql.Preparedstatement
意味着将在解析查询时对字符进行转义,当我的数据中有单引号时也会发生这种情况,但当我的表名本身有单引号时,查询不起作用(我使用的是Oracle 11g)
这是我的密码:
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(
"jdbc:oracle:thin:client/adept@ind-db-02:1521:ind02");
PreparedStatement preparedStatement = con.prepareStatement(
"SELECT * FROM (?) where rownum=1");
preparedStatement.setString(1,"CLIENT.\"SR'tab\"");
ResultSet rs3=preparedStatement.executeQuery();
有没有办法使用prepared语句从表名中转义单引号?PreparedStatement占位符不适用于表名或列名,它们只适用于实际列值。换句话说,您实际上误用了PreparedStatement 另见
虽然使用绑定参数将数据传递到数据库是非常正确的,但不能对表名使用绑定参数 在这种情况下,应该适当地引用它 e、 g.(未经测试):
我建议您现在就更改这些表名,以避免将来的痛苦。我们都使用的高性能工具非常好,但是如果一个人的颜色太离谱,痛苦是无止境的。我建议你现在就更改这些表名,以避免将来的痛苦。我们使用的高性能工具都很好,但是如果一个人的颜色太离谱,痛苦永无止境。为什么表名中有引号?我无法控制表名,这是ETL过程的一部分,需要从第三方数据源加载数据。为什么表名中有引号?我无法控制表名,这是ETL过程的一部分,需要从第三方数据源加载数据数据源和:)@BalusC是的,确实,我承认:)和:)@BalusC是的,确实,我承认:)这与表名的正确引号不匹配。我已经尝试过了,我怀疑这个escapeProcessing的原因是打开的,当我禁用escapeProcessing(JDBC级别)+正确的引号时,那么查询工作正常。这不适用于表名的正确引号。我已经试过了,我怀疑这个escapeProcessing的原因是打开的,当我禁用escapeProcessing(JDBC级别)+正确引用时,查询工作正常
PreparedStatement preparedStatement=
con.prepareStatement("SELECT * FROM \"CLIENT.SR'tab\" where rownum=1");