Я впервые работаю с типами данных Blob.
Я храню файлы изображений в типе данных MEDIUMBLOB в базе данных MySQL. Теперь я хочу получить его с помощью приложения JAVA.
До сих пор я нашел учебные пособия, использующие com.mysql.jdbc.Blob.
Я пытался,
Blob imgAsBlob = resultset.getBlob("image");
byte[] imgAsBytes = imgAsBlob.getBytes(1, (int) imgAsBlob.length());
но я получаю сообщение об ошибке на imgAsBlob.getBytes(1, (int) imgAsBlob.length()), потому что второй аргумент больше (46352), чем длина BLOB:
java.sql.SQLException: "pos" + "length" arguments cannot be larger than the BLOB's length.
Есть ли другой способ, кроме метода getBlob() или любого другого класса, кроме com.mysql.jdbc.Blob, который я могу использовать?
Спасибо.
@ f1sh Я не понял твоей точки зрения. Код такой же, как тот, который вы предложили использовать. Кроме того, Position 'pos' не может быть < 1.
Вы правы, 1 должен быть 0. Я не знал, что вы не можете передать 0 в качестве аргумента. Какова ценность imgAsBlob.length()?
imgAsBlob.length() is 46352этого не должно быть. Исходный код показывает, что pos уменьшен на единицу и проверка не должна завершиться неудачно. Я понятия не имею, что к этому приводит. Можете ли вы выполнить отладку метода getBytes?




Почему вы передаете значение
1в качестве первого параметра? Это обрезает первый байт. ИспользуйтеimgAsBlob.getBytes(1, (int) imgAsBlob.length())