2017-03-18 8 views
0

netbeansを使用してデータベースに画像を追加しようとしていますが、動作しません これは私のコードですmysqlに行くときは、 (BLOB - 50 O)Netbeansを使用してMySQLに画像を追加しようとしています

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+"')"; 
+0

ファイルシステム上の画像に変数名でパスを渡しているようです - イメージの実際のバイトデータではありませんか? – user681574

+0

私ははいと思いますが、どうすれば画像のバイトを保存できますか – Yaya38

+0

この記事をチェックしてください。イメージファイルをメモリにロードし、PreparedStatementオブジェクトに追加します。 http://stackoverflow.com/questions/9430008/inserting-blob-data-in-java-using-preparedstatement – user681574

答えて

0

私は私のクラスの内部でこのコードを持って、あまりにも

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

このMethodeのは、それは私がなぜ知らない私のために動作しません?

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

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;あなたはそれを参照する必要があります

関連する問題