java. sql .SQLException: недопустимые аргументы в вызове: getBytes () - PullRequest
2 голосов
/ 21 июня 2020

Я пытался преобразовать большой двоичный объект в строку с помощью следующего кода:

ResultSet rs = stmt.executeQuery(query);

Blob newValueBLOB = rs.getBlob("NEW_VALUE");
System.out.println(newValueBLOB);
String newValue = new String(newValueBLOB.getBytes(0, (int) newValueBLOB.length()));

Моя база данных - Oracle, и соединение установлено правильно. Я нашел похожий ответ, но мой не работает!

1 Ответ

4 голосов
/ 21 июня 2020

Из Javado c для Blob # getBytes :

byte [] getBytes (long pos, int length) выбрасывает SQLException pos - порядковый номер первого байта в извлекаемом значении BLOB; первый байт находится в позиции 1

Итак, ваш вызов getBytes() должен передавать 1 в качестве начальной позиции, а не ноль:

String newValue = new String(newValueBLOB.getBytes(1, (int) newValueBLOB.length()));

В качестве альтернативы, возможно, проще, вы можете просто использовать ResultSet#getBytes напрямую:

ResultSet rs = stmt.executeQuery(query);
byte[] newValue = rs.getBytes("NEW_VALUE");
String newValueStr = new String(newValue);
...