Как я описал в заголовке, я несколько раз пытался получить доступ к файлу изображения, используя InputStream
, а затем сохранить его в базе данных типа blob, но результат для второго, третьего и так далее нулевой. Вот фрагмент кода:
File image1 = new File("src/template1.png").getAbsoluteFile();
File image2 = new File("src/template2.png").getAbsoluteFile();
InputStream in1 = new FileInputStream(image1);
InputStream in2 = new FileInputStream(image2);
long length1 = image1.length();
long length2 = image2.length();
pstmt.setString(1, jTextField18.getText().toUpperCase());
pstmt.setBlob( 2, in1, length1 );
pstmt.setBlob( 3, in1, length1 );
pstmt.setBlob( 4, in1, length1 );
pstmt.setBlob( 5, in1, length1 );
pstmt.setBlob( 6, in1, length1 );
pstmt.setBlob( 7, in2, length2 );
Pstmt.setBlob( 8, in2, length2 );
тогда результат:
YR/21
[BLOB - 5.6 KiB]
[BLOB - 0 B]
[BLOB - 0 B]
[BLOB - 0 B]
[BLOB - 0 B]
[BLOB - 5.5 KiB]
[BLOB - 0 B]
Я попытался использовать новый InputStream
, подобный этому коду, и произошла другая ошибка. Пишет: Слишком большой размер строки (>8126). Может помочь изменение некоторых столбцов на TEXT или BLOB или использование ROW_FORMAT=DINAMIC или ROW_FORMAT=COMPRESSED. В текущем формате строки префикс BLOB размером 768 байт хранится в строке.
pstmt.setBlob( 2, in1, length1 );
image1 = new File("src/template1.png").getAbsoluteFile();
in1 = new FileInputStream(image1);
pstmt.setBlob( 3, in1, length1 );
image1 = new File("src/template1.png").getAbsoluteFile();
in1 = new FileInputStream(image1);
pstmt.setBlob( 4, in1, length1 );
Я думаю, что проблема решена и превращается в другую проблему. Спасибо за ответ