Я пытаюсь запросить таблицу с помощью JDB C executeQuery
. В моей базе данных Oracle есть таблица table1
(нижний регистр), которая содержит столбец col1
(также нижний регистр). К сожалению, я не могу изменить его на верхний регистр (чтобы соответствовать стандарту именования Oracle).
public ResultSet executeQuery (Connection con,String st) {
ResultSet rs=null;
Statement stmt=null;
try {
stmt=con.createStatement();
rs = stmt.executeQuery(st);
//rs.next();
} catch (Exception e) {
//System.exit(1);
}
return rs;
//rs.close();
//stmt.close();
//stmt=null;
}
Где st строка (оператор) содержит select count(*) from mySchema."table1" where "col1" >=1
, созданное с помощью:
String st="select count(*) from mySchema.\"table1\" where \"col1\" >=1";
Хотя этот запрос отлично работает с PL / SQL Developer или Toad, в JDB C этот запрос не работает, возвращая null в объекте rs
, вероятно, из-за ошибки «Таблица или представление не существует», связанной с использованием двойных кавычек. .
Трассировка стека показывает:
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion StringToCharBytes
FINER: 5BFA9431 Enter: "select count(*) from mySchema."table1" where "col1" >=1"
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion stringToDriverCharBytes
FINER: Enter: "select count(*) from mySchema."table1" where "col1" >=1"
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion stringToDriverCharBytes
FINER: Return: [B@6a84a97d
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion stringToDriverCharBytes
FINER: Exit [1.9144ms]
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion StringToCharBytes
FINER: 5BFA9431 Return: [B@6a84a97d
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion StringToCharBytes
FINER: 5BFA9431 Exit [7.3871ms]
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.OracleSql getSqlBytes
TRACE_30: 4E3958E7 Return: [B@6a84a97d
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.OracleSql getSqlBytes
TRACE_30: 4E3958E7 Exit [39.8323ms]
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion getServerCharSetId
FINER: 5BFA9431 Enter:
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion getServerCharSetId
FINER: 5BFA9431 Return: 873
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion getServerCharSetId
FINER: 5BFA9431 Exit [1.7472ms]
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion getNCharSetId
FINER: 5BFA9431 Enter:
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion getNCharSetId
FINER: 5BFA9431 Return: 2000
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.DBConversion getNCharSetId
FINER: 5BFA9431 Exit [1.8433ms]
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.T4CConnection sendPiggyBackedMessages
FINER: 5606C0B Enter:
sie 06, 2020 12:27:59 PM oracle.jdbc.driver.T4CConnection sendPiggyBackedMessages
FINER: 5606C0B Exit [0.0354ms]
sie 06, 2020 12:28:00 PM oracle.jdbc.driver.T4CTTIoer processError
SEVERE: 3514A4C0 Throwing SQLException: ORA-00942: table or view does not exists
Есть ли способ обойти эту проблему в Oracle JDB C в Java?