Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转义表SQL查询中的单引号_Java_Jdbc - Fatal编程技术网

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

另见

PreparedStatement占位符不用于表名或列名,它们仅用于实际列值。换句话说,您实际上误用了PreparedStatement

另见

尽管使用绑定参数将数据传递到数据库是非常正确的,但不能对表名使用绑定参数

在这种情况下,应该适当地引用它

e、 g.(未经测试):


虽然使用绑定参数将数据传递到数据库是非常正确的,但不能对表名使用绑定参数

在这种情况下,应该适当地引用它

e、 g.(未经测试):


我建议您现在就更改这些表名,以避免将来的痛苦。我们都使用的高性能工具非常好,但是如果一个人的颜色太离谱,痛苦是无止境的。

我建议你现在就更改这些表名,以避免将来的痛苦。我们使用的高性能工具都很好,但是如果一个人的颜色太离谱,痛苦永无止境。

为什么表名中有引号?我无法控制表名,这是ETL过程的一部分,需要从第三方数据源加载数据。为什么表名中有引号?我无法控制表名,这是ETL过程的一部分,需要从第三方数据源加载数据数据源和:)@BalusC是的,确实,我承认:)和:)@BalusC是的,确实,我承认:)这与表名的正确引号不匹配。我已经尝试过了,我怀疑这个escapeProcessing的原因是打开的,当我禁用escapeProcessing(JDBC级别)+正确的引号时,那么查询工作正常。这不适用于表名的正确引号。我已经试过了,我怀疑这个escapeProcessing的原因是打开的,当我禁用escapeProcessing(JDBC级别)+正确引用时,查询工作正常
PreparedStatement preparedStatement=
  con.prepareStatement("SELECT * FROM \"CLIENT.SR'tab\" where rownum=1");