尝试使用 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的主要内容,如果未能解决你的问题,请参考以下文章

如何将 FLTK 库添加到 netbeans 项目中

尝试使用 https 将存储库克隆到 NetBeans 时凭据不正确

无法在 NetBeans 中将 jar 添加到调色板

自动将 `insertable = false, updatable = false` 添加到 Netbeans 生成的实体

netbeans:如何将小部件添加到 QT 变量

将 openCV .dll 文件添加到 Netbeans C++ Qt 应用程序