Connection cn;
Statement st;
PreparedStatement pstmt=null;
PreparedStatement pst;
ResultSet rs;
Object fname, mname, lname, bdate, nation, statusq,InstNo, photo, combo, place, mimi;
int status;
private void btnNextMouseClicked(java.awt.event.MouseEvent evt) {
fname=txtFirtsName.getText();
lname=txtLastName.getText();
mname=txtMiddleName.getText();
InstNo=txtInstituteNo.getText();
place=txtPlacBirth.getText();
//photo=txtPicturePath.getText();
status=combostatus.getSelectedIndex();
Object dave=((JTextField)chooserBirthDate.getDateEditor().getUiComponent()).getText();
Object isa=combonation.getSelectedItem();
Object photo=pictureName.getClass();
// pst.setBytes();
// bdate=((JTextField)chooserBirthDate.getDateEditor().getUiComponent()).getText();
if(status==1){
statusq=("In Active");
}
else{
statusq="Active";}
try{
String addrecords="insert into brothers(FirstName, MiddleName, LastName, BirthDate, BirthPlace, Nationality, InstituteNumber, Status, Picture) values('"+
fname +"', '" +
mname +"', '" +
lname +"', '" +
dave +"', '" +
place +"', '" +
isa +"', '" +
InstNo +"', '" +
statusq +"', '" +
photo +"')";
//wrapField();
st.executeUpdate(addrecords);
}
我的文件选择器代码并将图片转换为二进制文件:
private void btnFileChooserActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser izoChooser=new JFileChooser();
izoChooser.showOpenDialog(null);
File pictureBrother=izoChooser.getSelectedFile();
pictureName=pictureBrother.getAbsolutePath();
txtPicturePath.setText(pictureName);
try {
File image=new File(pictureName);
FileInputStream fis=new FileInputStream(image);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
byte[] buf=new byte[1024];
for(int readNum; (readNum=fis.read(buf))!=-1;){
bos.write(buf,0,readNum);
}
person_image=bos.toByteArray();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
//e.printStackTrace();
}
我在代码的底部声明了这些变量:
private javax.swing.JTextField txtTrial;
// End of variables declaration
String pictureName=null;
int s=0;
byte[] person_image=null;
}
问题:我的代码没有错误但是数据库没有错误,它仅在图片的BLOB列上注册8B,无论我选择哪个图片都无关紧要。如果直接通过数据库上传数据库中的图片然后再上传,图片就会上传到数据库。什么可能是问题?
我的主要问题是:我GUESS,对象照片= pictureName.getClass();
应该是什么,因为如果我要使用准备好的声明,那么: preparedStatemnt.setBytes(10,person_image);。
但是没有.getBytes();
答案 0 :(得分:0)
Object photo=pictureName.getClass();
这只会给你pictureName
变量的类对象。我怀疑那是你想要的。如果要使用JDBC插入BLOB,则必须处理基础字节流。我建议你仔细阅读:http://docs.oracle.com/javase/tutorial/jdbc/basics/blob.html
哦,请使用PreparedStatement
s。