Запрос имени таблицы в нижнем регистре через JDBC - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь запросить таблицу с помощью 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...