Извлечение данных оракула VARCHAR2 (N BYTE) возвращает пустую строку в JAVA - PullRequest
0 голосов
/ 21 ноября 2018

Я хотел бы знать, что происходит, когда я пытаюсь получить данные из базы данных ORACLE.Тип данных столбца - VARCHAR2 (40 байт), который не имеет значения ENULL.

Из @Thoma, сообщите в разделе комментариев, я изменил фото на текст.

В SQL DEVELOPPER у меня естьследующий результат

SELECT ZONE_DESC FROM IC_RATE_ZONES;
"ZONE_DESC"
VIRGIN ISLANDS UK
VIRGIN ISLANDS US
WALLIS AND FUTUNA IS
YEMEN
ZAMBIA
ZAMBIA MOBILE

И когда я пытался извлечь эти данные в коде JAVA:

try{
    con = conn.getOracle();
    stm = con.createStatement(); 
    Rs = stm.executeQuery("select ZONE_DESC FROM IC_RATE_ZONES");
    while(Rs.next()){
              System.out.println(Rs.getString("ZONE_DESC"));
    }
} catch(Exception e){
    e.printStackTrace();
}

, я получаю пустой результат в выводе моей консоли.

1 Ответ

0 голосов
/ 21 ноября 2018

ОГРОМНОЕ СПАСИБО ЗА ВСЕХ, ЧТО ПОТРЕБУЕТСЯ, чтобы ответить на него.@secretsuperstar упомянул это решение в разделе комментариев, но в первый раз я сделал это неправильно.

https://bjurr.com/jdbc-problem-resultset-getstring-returns-nothing/

Сначала нужно получить ASCII и прочитать его.Тип данных усложнил ситуацию.

вот окончательный результат:

try{
        con = conn.getOracle();
        stm = con.createStatement();
         Rs = stm.executeQuery("select ZONE_DESC FROM IC_RATE_ZONES");

        while(Rs.next()){
            String str = new String();
            InputStreamReader in = new InputStreamReader(Rs.getAsciiStream("ZONE_DESC"));
            while(in.ready()){
                str = str + (char)in.read();
            }
            System.out.println(str);
        }
    } catch(Exception e){
        e.printStackTrace();
    }

спасибо всем.НАДЕЖДА ЕГО ПОМОГИТЕ КТО-ЛИБО

...