java - 如何将 fileStream 转换为 blob 以将其添加到 sql 表中?
问题描述
我的数据库是这样的: id(int),nomTournoi(varchar),nbr_equipe(int),dateTournoi(date),terrainTournoi(varchar),image(blob) 我尝试将图像添加到我的表中,但我无法获得如何将文件转换为 blob 我尝试将其转换为 fileInputStream 但如果有人能给我提示如何做到这一点,这是我在 doc.java 中的函数
public void ajouterTournoi(Tournoi t) {
try {
String requete = "INSERT INTO tournoi (nomTournoi,nbr_equipe,dateTournoi,terrainTournoi,image)"
+ "VALUES ('"+t.getNomTournoi()+"','"+t.getNbr_equipe()+"','"+t.getDateTournoi()+"','"+t.getTerrainTournoi()+"','"+t.getImage()+"')";
Statement st = MyConnection.getInstance().getCnx()
.createStatement();
st.executeUpdate(requete);
System.out.println("Tournoi ajoutée");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
这是控制器上的功能
private void ajouterTournoi(ActionEvent event) {
/// SAUVEGARDE DANS LA BD
String nomT = nomTournoi.getText();
String nomTerrain = terrain.getValue();
Integer nbr_Equipe = nbrEquipe.getValue();
LocalDate dateT = dateTournoi.getValue();
try {
FileChooser fc = new FileChooser();
File selectedFile = fc.showOpenDialog(null);
FileInputStream fileInput = new FileInputStream(selectedFile);
Tournoi p = new Tournoi(14, nomT, nbr_Equipe, dateT, nomTerrain,fileInput);
TournoiCRUD pcd = new TournoiCRUD();
pcd.ajouterTournoi(p);
JOptionPane.showMessageDialog(null, "image ajouté");
JOptionPane.showMessageDialog(null, "Tournoi ajouté");
} catch (FileNotFoundException ex) {
Logger.getLogger(AddTournoiController.class.getName()).log(Level.SEVERE, null, ex);
}
}
解决方案
首先,你真的应该使用准备好的语句,因为你构建数据库语句的方式容易受到SQL 注入的影响。其次,我认为准备好的语句无论如何都是插入 blob 的唯一方法。
PreparedStatement statement = MyConnection.getInstance().getCnx()
.prepareStatement("INSERT INTO tournoi (nomTournoi,nbr_equipe,dateTournoi,terrainTournoi,image) VALUES (?,?,?,?,?)");
// I don't know what types you have here
statement.setString(1, t.getNomTournoi());
// Add your other arguments here
statement.set(5, t.getImage());
推荐阅读
- python - sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1062, "Duplicate entry '' " for key ""
- python - “手动”抛出的异常在 PowerShell ISE 中捕获,但不在命令行中
- python - 使用 unittest 框架测试 pandas 数据框
- performance - 我可以依赖 Google Lighthouse 报告(尤其是对于移动网站)吗?
- python - 我正在为这个 python 代码苦苦挣扎(我是初学者)
- javascript - 如何正确注释缓存的mixin
- azure - 从 Azure 帐户中删除所有资源
- c# - YamlDotNet - 自定义序列化
- node.js - NodeJS 中的动态导入(在 Gatsby 中):未指定动态导入回调
- reactjs - React hooks - 当我们刷新页面时从 react-router 位置状态中删除