【问题标题】:display blob image in jsp (javax.servlet.ServletException: java.sql.SQLException: Column '2' not found.)在 jsp 中显示 blob 图像(javax.servlet.ServletException:java.sql.SQLException:未找到列 '2'。)
【发布时间】:2014-07-29 18:58:48
【问题描述】:

我试图通过 (using this) 在 jsp 页面中显示 blob 图像,但出现错误:

javax.servlet.ServletException: java.sql.SQLException: Column '2' not found.

我的桌子是:

create table upload_image
(
    iImageID int AUTO_INCREMENT primary key,
    bImage longblob
);

代码:uploadimage.jsp

<%@ page language="java"  errorPage="" %>
<html>
<head>
<title>Image insert into database</title>
</head>

<body>
<form name="frm" action="saveImage.jsp" enctype="multipart/form-data" method="post">
<input type="file" name="uProperty" /> <br>
<input type="submit" name="goUpload" value="Upload" />
</form>
</body>
</html>

saveImage.jsp

<%@ page import="java.sql.*" %>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.io.output.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%
 Connection conn=null;
 Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/online","root", "12345");

 PreparedStatement psImageInsertDatabase=null;

 byte[] b=null;
 try{
   String sqlImageInsertDatabase="insert into upload_image (bImage) values(?)";
   psImageInsertDatabase=conn.prepareStatement(sqlImageInsertDatabase);

   DiskFileItemFactory factory = new DiskFileItemFactory();

   ServletFileUpload sfu = new ServletFileUpload(factory);
   List items = sfu.parseRequest(request);

   Iterator iter = items.iterator();

     while (iter.hasNext()) {
     FileItem item = (FileItem) iter.next();
     if (!item.isFormField()) {
          b = item.get();
       }
     }

     psImageInsertDatabase.setBytes(1,b);
     psImageInsertDatabase.executeUpdate();
    }
   catch(Exception e)
   {
    e.printStackTrace();
    response.sendRedirect("addimage.jsp");
   }

   %>

get.jsp

<%@ page import ="java.sql.*" %>
<%
 Class.forName("com.mysql.jdbc.Driver");
 Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/online","root", "12345");
Statement st = con.createStatement();

ResultSet i = st.executeQuery("select * from upload_image");
%>

 <%

 while(i.next( )){
   %>
       <img src="imageServlet?id=<%=i.getString("2")%>" />
<%  }%>

执行get.jsp后(执行uploadimage.jsp后)我得到"Column '2' not found."请帮我在jsp页面中显示图像

【问题讨论】:

    标签: mysql image jsp blob


    【解决方案1】:

    它抛出一个错误,因为它找到了一个名为 2 的列,因为你把 2 放在双引号中。我觉得它应该是 1 而不是 2(但你知道得更好) 这是下面的答案

     <img src="imageServlet?id=<%=i.getString(1)%>" />//with no quotes as you can see
    

    &lt;img src="imageServlet?id=&lt;%=i.getString("iImageID")%&gt;" /&gt;

    【讨论】:

    • 嗨,桑尼,谢谢你的回答。删除引号后,我得到类似imageshack.com/a/img841/5457/iyz9.png 的输出
    • 但是你放了什么?2还是1?
    • 你放了2还是1?
    • 感谢您的关心......正如您所说,我修改了,但我无法显示图像并出现错误imageshack.com/a/img819/4482/nc16.png
    • @kiranlanke 你能在你的问题中添加 servlet 代码吗?
    猜你喜欢
    • 2012-02-24
    • 2021-09-06
    • 2012-04-20
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2020-06-19
    相关资源
    最近更新 更多