如何使用ResultSet设置/获取图像(BLOB)

时间:2016-12-22 21:28:31

标签: java image jdbc blob

我正在努力尝试只显示图像。我正在使用JLabel来显示图像。我正在使用resultset.getBytes("Images")从数据库中检索图像,当我尝试显示图像时会出现问题。 setIcon方法不起作用。

这是我用来从数据库中检索信息和图像的方法:

public List<Employee> selectAllEmployees(){

        statement = connection.createStatement();
        ResultSet resultset = statement.executeQuery( "SELECT * from employees" );

        List testEmps = new ArrayList<Employee>();
        while ( resultset.next() ) {

            Employee e1 = new Employee(
                    resultset.getBytes("Images"));

            testEmps.add(e1);   

        }

        return testEmps;

    } catch ( Exception e1) {

    }
    return null;
}

请注意 - 为了方便起见,我删除了大部分代码。我确实连接到数据库并检索了所有其他数据。为了方便起见,我删除了大部分代码。

这是我用来设置所有其他数据的代码 -

public void showEmps(int index){
    idTextField.setText(selectAllEmployees().get(index).getid());

    photoLabel.setIcon(selectAllEmployees().get(index).getImages());
}

我离开idTextField仅用于演示目的。一切都按预期工作。

我知道这与我的员工类有关 -

public class Employee extends Person {
    private String id;
    private String salary;
    private String startDate;
    private String title;
    private String email;
    private static byte [] Images;

    public Employee(){
        this("", "", "", "", "", "", "", "", "", "", "", Images);
    }

    public Employee(String id, String Name, String Sex,  String date,  String address, String postcode, String natIncsNumber,
            String title, String startDate, String salary, String email, byte[] images){

        super(Name, Sex,natIncsNumber, date, address, postcode);
        this.id = id;

        this.startDate = date;
        this.title = title;
        this.salary = salary;
        this.email = email;
        Images = images;
    }

我的问题是,我如何解决问题,因为在我的员工类中,图像的类型为Bytes我可以使用getBytes语句来检索图像,但没有{{1} }只设置图标。我确实有另一个代码来循环每个员工,这确实显示了图像,但是,它使用setBytes方法并使用setIcon方法,如下所示:

ImageIcon

有人可以帮助我吗?

0 个答案:

没有答案