Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ResultSet.next()未迭代_Java_Sql_Iteration_Resultset - Fatal编程技术网

Java ResultSet.next()未迭代

Java ResultSet.next()未迭代,java,sql,iteration,resultset,Java,Sql,Iteration,Resultset,我的代码: public class DisplayImage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String connectionURL = "jdbc:mysql://localhost:3306/ycards";

我的代码:

public class DisplayImage extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String connectionURL = "jdbc:mysql://localhost:3306/ycards";
        java.sql.Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(connectionURL, "root", "letmein");
            PreparedStatement st1 = con.prepareStatement("select image from pictures");
            ResultSet rs1 = st1.executeQuery();
            String imgLen = "";
            while (rs1.next()) {
                imgLen = rs1.getString(1);
                int len = imgLen.length();
                byte[] rb = new byte[len];
                InputStream readImg = rs1.getBinaryStream(1);
                readImg.read(rb, 0, len);
                response.setContentType("image/png");
                response.getOutputStream().write(rb, 0, len);
                response.getOutputStream().flush();
            }
            st1.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
输出:


它只显示第一行,不显示其余的,为什么这样做?注意:在本例中,密码和用户名不是真实的。

您在
结果集上迭代
作为
next()
将光标从当前位置向前移动一行,并在读取最后一个位置时返回
false

问题在于每次迭代时都会刷新
httpResponse.outputstream

并在
PrintWriter
上调用
flush()
,提交HTTP响应。
因此,在第一次迭代之后,您无法写入任何内容。

我不认为您可以使用图像内容类型发送多张图像:

response.setContentType("image/png");
如果您想使用此内容类型,也可以创建一个结合了所有内容类型的大图像。
但这真的有意义吗?

我怀疑您不需要使用:

response.setContentType("image/png");
但是,您应该使用首先生成的图像URL在客户端页面中显示图像。

然后,您可以使用JSTL或scriplet对url图像进行迭代,将它们呈现为HTML
img
元素。

不要放置代码图片。我们无法将其复制到我们的编辑器中。非常漂亮的图像!我把它改成了代码你真的用那种方式格式化代码吗?这样做无助于理解代码和查找bug。。。或者它只是一个论坛。从示例代码中删除前导的回勾号。反勾号用于内联代码段,而不是代码块。相反,用四个空格字符缩进代码的所有行。在文本编辑器中很容易做到。我应该将flush()方法放在哪里?我在while循环之后将flush()移动到,但它仍然不起作用