【问题标题】:Try to add Image to Mysql using Netbeans尝试使用 Netbeans 将 Image 添加到 Mysql
【发布时间】: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 对象中。 stackoverflow.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+"')

标签: java mysql netbeans blob


【解决方案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://stackoverflow.com/a/15036043/7808973;你应该看到它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-12
        • 2014-08-29
        相关资源
        最近更新 更多