我是个中专毕业的,
毕业后培训了2个阶段的软件开发
java:oop,javaWeb(jsp+servlet+javabean)开发项目,
使用数据库:SQLserver,在C#/Winform中,用流的方式把图片存放取出都很简单的,就是在我最喜欢的java中,怎么都不行,
高手帮帮忙啊,
最好用一段代码的方式给出。。谢谢了啊

解决方案 »

  1.   

    PreparedStatement 有一个setBinaryStream
    可以把二进制数据写入数据库读的时候 getBinaryStream 就可以读回来
      

  2.   

    希望对你有帮助。import java.io.*;
    import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.sql.*;public class imageServlet extends HttpServlet { /**
     * Constructor of the object.
     */
    Connection conn = null;
    public imageServlet() {
    super();
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    this.conn = DriverManager.getConnection("jdbc:odbc:test");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public void insertImgToDb() {
    try {
    PreparedStatement stmt = this.conn.prepareStatement("insert into test (imgtest) values(?)");
    File file = new File("d:\\a.JPG");

    FileInputStream input = new FileInputStream(file);
    stmt.setBinaryStream(1, input,input.available());

    //input.close();
    stmt.executeUpdate();
    stmt.close();
    input.close();

    } catch (Exception e) {
    e.printStackTrace();
    }

    }

    public BufferedImage getImgFromDb() {
    BufferedImage image = null;

    try {
    PreparedStatement stmt = conn.prepareStatement("select imgtest from test");
    ResultSet rs = stmt.executeQuery();
    rs.next();

    image = ImageIO.read(rs.getBinaryStream(1));
    rs.close();
    stmt.close();
    conn.close();
    } catch (Exception e) {
    e.printStackTrace();
    }

    return image;
    } /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("image/jpeg");
    this.insertImgToDb();
    BufferedImage img = this.getImgFromDb();
    ImageIO.write(img, "JPG", response.getOutputStream());
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { this.doGet(request, response);
    } public void init() throws ServletException {
    // Put your code here
    }}