Я делаю создание продукта с помощью netbeans и mySQL. Я использовал выбора файлов, чтобы получить изображение от пользователя при нажатии на кнопки, например:Вставить изображение в MySQL
public void handle(ActionEvent event){
FileChooser fileChooser = new FileChooser();
//Set extension filter
FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG");
FileChooser.ExtensionFilter extFilterPNG = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.PNG");
fileChooser.getExtensionFilters().addAll(extFilterJPG, extFilterPNG);
//Show open file dialog
File file = fileChooser.showOpenDialog(null);
try {
BufferedImage bufferedImage = ImageIO.read(file);
WritableImage image = SwingFXUtils.toFXImage(bufferedImage, null);
myImageView.setImage(image);
} catch (IOException ex) {
Logger.getLogger(CreateProductUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
И я показываю изображение, используя код ниже:
Image image = panel.getMyImageView().getImage();
Он работает хорошо, пока я пытаюсь вставьте изображение в базу данных. Это мой конструктор и создать метод:
public Product(String name,String desc,double price, int quantity,String datestr,Image image){
this.name = name;
this.desc = desc;
this.price = price;
this.quantity = quantity;
this.datestr = datestr;
this.image = image;
}
public boolean create(){
boolean success = false;
DBController db = new DBController();
String dbQuery;
db.getConnection();
dbQuery = "INSERT INTO sm_product(productName,productDescription,productPrice,productQuantity,dateOfCreation,productStatus,productImage) VALUES ('" + name + "', '" + desc + "', " + price + ", " + quantity + ",'" + datestr + "', 'Available', '" + image + "')";
if (db.updateRequest(dbQuery) == 1){
success = true;
}
db.terminate();
return success;
}
Однако образ был сохранен как «[email protected]». Я пробовал дважды с тем же изображением, но адрес был другим. Интересно, я неправильно хранил изображение? Я не уверен, могу ли я получить изображение, используя команду select SQL, потому что я еще не пытался, но я думаю, что это не сработает.
У кого-то есть лучший способ решить проблему, потому что изображение, хранящееся в базе данных, очень странно, и я думаю, что это может быть неправильно.
Заранее спасибо.
Обновленный участок
public void getConnection(){
String url = "";
try {
//url = "jdbc:mysql://172.20.133.227/test";
url = "jdbc:mysql://localhost/amkcc";
con = DriverManager.getConnection(url, "root", "root");
System.out.println("Successfully connected to " + url+ ".");
}
catch (java.sql.SQLException e) {
System.out.println("Connection failed ->"+ url);
System.out.println(e);
}
}
Чтобы сохранить blob, вам необходимо передать 'byte []' в качестве параметра. вам нужно будет выяснить, как построить это из существующего кода – DevZer0
что такое blob? также как использовать байт [] –
, если вы используете немного google, я уверен, что вы можете найти ответы. – DevZer0