Java 尝试使用Netbeans将映像添加到Mysql

Java 尝试使用Netbeans将映像添加到Mysql,java,mysql,netbeans,blob,Java,Mysql,Netbeans,Blob,我正在尝试使用netbeans将映像添加到数据库中,但它对我不起作用 这是我的密码 当我转到mysql时,我看到的图像只有八位字节大小(BLOB-50o) 我的类中也有这个代码 JFileChooser file = new JFileChooser(); file.setCurrentDirectory(new File(System.getProperty("user.home"))); FileNameExtensionFilter filter = new FileNameExtens

我正在尝试使用netbeans将映像添加到数据库中,但它对我不起作用 这是我的密码 当我转到mysql时,我看到的图像只有八位字节大小(BLOB-50o)


我的类中也有这个代码

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");
 }

这种方法不适合我我不知道为什么

   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();

使用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() );

我是从评论中得到的:;您应该会看到,

看起来您是通过变量名传递到文件系统上的映像的路径,而不是映像的实际字节数据?我想是的,但是如何存储映像的字节查看本文。它将图像文件加载到内存中,并将其添加到PreparedStatement对象中。谢谢,但它不起作用我的意思是这种方法(插入工件(图像)值(?)不起作用我需要这样的插入工件(代码工件,参考,名称,标记,尺寸,量子位,分类,类型,描述,图像)值(“+Code+”,“+Reference+”,“+Nom+”,“+marque+”,“+Dimention+”,“+quantie+”,“+Cate+”,“+Type+”,“,“+Type+”,”“+description+”,“+imgPath+”)
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() );