尝试使用 Netbeans 将 Image 添加到 Mysql
Posted
技术标签:
【中文标题】尝试使用 Netbeans 将 Image 添加到 Mysql【英文标题】:Try to add Image to Mysql using Netbeans 【发布时间】:2017-03-18 16:33:38 【问题描述】:我正在尝试使用 netbeans 将图像添加到数据库,但它对我不起作用 这是我的代码 当我转到 mysql 时,我在那里看到图像,但只有八位字节大小(BLOB - 50 o)
String code=jTextField1.getText();
String reference=jTextField2.getText();
String nom=jTextField3.getText();
String marque=jTextField4.getText();
String dimention=jTextField5.getText();
String quantite=jTextField6.getText();
String discription=jTextPane1.getText();
String famille =jTextField7.getText();
String code_famille =jTextField10.getText();
String sousfamille=jTextField8.getText();
String requete="insert into piece (Code_Piece,Reference,Nom_P,Mark_P,Dimention,Quantite,Categorie,Type,Discription,Image) VALUES('"+
code+"','"+reference+"','"+nom+"','"+marque+"','"+dimention+"','"+quantite+"','"+Cate+"','"+Type+"','"+discription+"','"+imgPath+"')";
【问题讨论】:
看起来您是通过变量名传递文件系统上图像的路径——而不是图像的实际字节数据? 我认为是的,但是我如何存储图像的字节 查看这篇文章。它将图像文件加载到内存中并将其添加到 PreparedStatement 对象中。 ***.com/questions/9430008/… 谢谢,但是不行 我的意思是这个方法(插入到片断(图像)值(?))它不起作用我需要像这样插入片断(Code_Piece,Reference,Nom_P,Mark_P,Dimention,Quantite,Categorie ,Type,Discription,Image) VALUES('"+code+"','"+reference+"','"+nom+"','"+marque+"','"+dimention+"','"+quantite+"' ,'"+Cate+"','"+Type+"','"+discription+"','"+imgPath+"') 【参考方案1】:我的班级里也有这段代码
JFileChooser file = new JFileChooser();
file.setCurrentDirectory(new File(System.getProperty("user.home")));
FileNameExtensionFilter filter = new
FileNameExtensionFilter("*.images","jpeg","jpg","png","bmp");
file. addChoosableFileFilter(filter);
int result = file.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION)
File selectedFile = file.getSelectedFile();
String path = selectedFile.getAbsolutePath();
lbl_image.setIcon(ResizeImage(path, null));
imgPath = path;
else if (result == JFileChooser.CANCEL_OPTION)
System.out.println("No Fille Selected");
【讨论】:
【参考方案2】:这个方法对我不起作用我不知道为什么?
InputStream img = new FileInputStream(new File(imgPath)) ;
String sql="insert into 'stock'.'piece' (Code_Piece,Reference,Nom_P,Mark_P,Dimention,Quantite,Categorie,Type,Discription,Image) VALUES(jTextField1.getText(),'"+jTextField2.getText()+"','"+jTextField3.getText()+"','"+jTextField4.getText()+"','"+jTextField5.getText()+"','"+jTextField6.getText()+"','"+jTextField9.getText()+"','"+jTextField11.getText()+"','"+jTextPane1.getText()+"')";
ps =conn.prepareStatement(sql);
ps.setString(1, jTextField1.getText());
ps.setString(2, jTextField2.getText());
ps.setString(3, jTextField3.getText());
ps.setString(4, jTextField4.getText());
ps.setString(5, jTextField5.getText());
ps.setString(6, jTextField6.getText());
ps.setString(7, jTextField9.getText());
ps.setString(8, jTextField11.getText());
ps.setString(9,jTextPane1.getText());
ps.setBlob(10, is);
ps.execute();
【讨论】:
【参考方案3】:使用 BLOB 的正确方法是传递 InputStream 本身。您可以使用您正在使用的 FileInputStream 来读取文件。
File image = new File(path);
FileInputStream fis = new FileInputStream ( image );
String sql="insert into imgtst (username,image) values (?, ?)";
pst=con.prepareStatement(sql);
pst.setString(1, user);
pst.setBinaryStream (2, fis, (int) file.length() );
我从评论中得到这个:https://***.com/a/15036043/7808973;你应该看到它
【讨论】:
以上是关于尝试使用 Netbeans 将 Image 添加到 Mysql的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 https 将存储库克隆到 NetBeans 时凭据不正确
自动将 `insertable = false, updatable = false` 添加到 Netbeans 生成的实体