将图像插入数据库给我一个错误

时间:2021-02-09 16:48:50

标签: database image

我尝试了不同的方法将我的图像输入到我的数据库中,但我失败了。我不确定我做错了什么。

我可以完美地选择我的图像,也可以使用:

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) 列,则一切正常。 请帮忙

0 个答案:

没有答案
相关问题