Member 13770582 Ответов: 1

Я хочу сохранить байтовый массив файла изображения в своей базе данных SQL


У меня есть ошибка при подключении к базе данных mysql, т. е.,
Exception in thread "main" java.lang.NullPointerException
at Image.db.main(db.java)


Что я уже пробовал:

Я преобразовал свое изображение в байтовый массив с помощью входного потока файла
public AES() {
try {
JFileChooser fc = new JFileChooser();
int i = fc.showOpenDialog(frame);
if (i == JFileChooser.APPROVE_OPTION) {
File f = fc.getSelectedFile();
filepath = f.getPath();
byte[] b = new byte[(int) f.length()];
try
{
FileInputStream fileInputStream = new FileInputStream(f);
fileInputStream.read(b);
System.out.println("byte " +b);
} catch (FileNotFoundException e) {
System.out.println("File Not Found.");
e.printStackTrace();
}
}
У меня есть ошибка при подключении к базе данных mysql, т. е.,
Exception in thread "main" java.lang.NullPointerException
at ImageConversion.Showdb.main(Showdb.java)

код:
JFileChooser fc = new JFileChooser();
File f = fc.getSelectedFile();
Class.forName("com.mysql.jdbc.Driver"); 
Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/image","root",""); 
System.out.println(con);
String sql = "INSERT INTO img_enc(image,date) VALUES(?,now())";
byte[] b = new byte[(int) f.length()];
FileOutputStream fileOutputStream = new FileOutputStream(f);
fileOutputStream.write(b);
PreparedStatement pstmt = con.prepareStatement(sql); 
pstmt.setBytes(1, b);
pstmt.executeUpdate();
pstmt.close();
пожалуйста, помогите мне решить эту проблему...

Afzaal Ahmad Zeeshan

Подумайте о том, чтобы избежать хранения большого двоичного объекта в базе данных; сохраните изображение в файловой системе и сохраните имя файла в базе данных.

Richard MacCutchan

Где происходит ошибка?

Member 13770582

byte[] b = новый байт[(int) f.длина()];

Richard MacCutchan

Это говорит о том, что переменная f не была инициализирована. Вам нужно использовать свои инструменты отладки, чтобы выяснить, почему.

1 Ответов

Рейтинг:
4

Wendelius

Здесь вы можете найти несколько исчерпывающих примеров:
- Связывающий: Установление соединения (учебники Java™ > JDBC(TM) Database Access > JDBC Basics)[^]
- Хранение Лобов Использование больших объектов (учебники Java™ > JDBC(TM) Database Access > JDBC Basics)[^]