从结果集对象中检索元素

时间:2013-12-09 11:15:58

标签: java sql servlets jdbc

我想从结果集对象中检索blob元素,我想在一个窗口中逐个显示数据库中的所有图像。

下面的

是我的数据库表。


| application_name | varchar(45)  | 
| application_id   | varchar(10)  | 
| application_path | varchar(500) | 
| application_icon | blob         |

下面是我的代码servlet代码,用于从数据库中检索图像

Image.java

response.setContentType("image/jpeg");
        try {
            Connection connection= DBUtil.getConnection();
            PreparedStatement preparedStatement=connection.prepareStatement("select application_icon  from application_master where application_path='abc'");
            ResultSet resultSet=preparedStatement.executeQuery();
            int i=1;
            //out.print("<h1>photo</h1>");
            while (resultSet.next()) {
                /*out.print("<img width='200' height='200' src="+resultSet.getBlob(1)+ ">  </img>" );*/
                Blob blob=resultSet.getBlob(i);
                response.setContentLength((int) blob.length());
                InputStream inputStream=blob.getBinaryStream();
                OutputStream outputStream=response.getOutputStream();
                byte buf[]=new byte[(int) blob.length()];
                inputStream.read(buf);
                outputStream.write(buf);
                Thread.sleep(1000);
                System.out.println("displayed");
                i=i+1;
                System.out.println(i);
            }

上面的代码从第1行检索图像并显示图像。当我变为2即i = 2.它显示异常“java.sql.SQLException:列索引超出范围,2> 1。”。

我不明白当查询“从application_master中选择application_icon = application_path ='abc'”执行时,它会返回多个图像.........那么如何从结果集中检索所有图像对象

如果我不对,请纠正我..........

1 个答案:

答案 0 :(得分:4)

您需要使用.getBlob(1),而不是.getBlob(i)。对于resultSet对象返回的每一行,BLOB数据始终位于第1列。