我尝试了不同的方法将我的图像输入到我的数据库中,但我失败了。我不确定我做错了什么。
我可以完美地选择我的图像,也可以使用:
public void insertPicture(){
int x = 0,y = 0;
JFileChooser file = new JFileChooser();
file.setCurrentDirectory(new File(System.getProperty("user.home")));
int result = file.showSaveDialog(getParent());
if(result == JFileChooser.APPROVE_OPTION){
File selectedPicture = file.getSelectedFile();
filePath = selectedPicture.getAbsolutePath();
//JOptionPane.showMessageDialog(null, "Picture Inserted");
ImageIcon picture = new ImageIcon(selectedPicture.getAbsolutePath());
System.out.println("Path is "+filePath);
jLabelPicture.setIcon(resizeIcon(picture,jLabelPicture.getWidth()-5, jLabelPicture.getHeight()-5));
}
}
图像路径设置为字符串 *filePath 并且工作正常。 然后我连接到我的数据库并初始化所有我需要的值:
PreparedStatement stmt = null;
try{
//JDBConnection.JDBConnect();
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
java.sql.Connection con = DriverManager.getConnection("jdbc:derby:C:\\Program Files\\ERS\\database\\EmployeeDB", "axle","axle");
java.sql.Statement check = con.createStatement();
stmt = con.prepareStatement("insert into EMPLOYEETABLE(NAME,SURNAME,GENDER,DEPARTMENT,EMAIL,"
+ "NATIONALITY,NATIONALID,CONTACT,"
+ "NEXTOFKINCONTACT,DOB,STARTDATE,JOBTYPE,IMAGE)values(?,?,?,?,?,?,?,?,?,?,?,?,?");
name = nameLabel.getText().toUpperCase();
surname = surnameLabel.getText().toUpperCase();
department = departmentLabel.getText().toUpperCase();
email = emailLabel.getText().toUpperCase();
nationality = nationalityLabel.getText().toUpperCase();
gender = jComboBoxGender.getSelectedItem().toString();
jobType = jComboBoxJobType.getSelectedItem().toString();
id = idLabel.getText().toUpperCase();
contact = contact1Label.getText();
kinContact = contact2Label.getText();
dob = jDateChooserDOB.getDate();
jDateChooserDOB.getDate().getTime();
java.sql.Date DoBDate = new java.sql.Date(jDateChooserDOB.getDate().getTime());
DoBDate.toString();
jDateChooserStartDate.getDate().getTime();
java.sql.Date StartDate = new java.sql.Date(jDateChooserStartDate.getDate().getTime());
StartDate.toString();
startDate = jDateChooserStartDate.getDate();
但是当我尝试使用 setBinaryStream 设置我的图像时,我收到一个错误:
if(rs.next()){
JOptionPane.showMessageDialog(null, "Cannot duplicate ID # "+id+"");
}
else{
stmt.setString(1,name);
stmt.setString(2,surname);
stmt.setString(3, gender);
stmt.setString(4,department);
stmt.setString(5,email);
stmt.setString(6,nationality);
stmt.setString(7,id);
stmt.setString(8,contact);
stmt.setString(9,kinContact);
stmt.setDate(10, DoBDate);
stmt.setDate(11, StartDate);
stmt.setString(12, jobType.toUpperCase());
image = new FileInputStream(new File(filePath));
stmt.setBinaryStream(13, image);
System.out.println("Image Found");
int a = stmt.executeUpdate();
我表中的列 IMAGE 的类型是 BLOB
我得到的错误是java.sql.SQLSyntaxErrorException: Syntax error: Encountered "" at line 1
如果我停止尝试插入 IMAGE(BLOB) 列,则一切正常。 请帮忙