怎么把图片从eclipse里存储到数据库里去
数据库已经连接好了  各位帮帮忙

解决方案 »

  1.   

    <%@ page language="java"%> 
    <%@ page contentType="text/html;charset=gb2312" %> 
    <%@ page import="java.util.*" %> 
    <%@ page import="java.sql.*"%> 
    <%@ page import="java.text.*"%> 
    <%@ page import="java.io.*"%> 
    <% 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    String url="jdbc:oracle:thin:@172.16.34.4:1521:frerp"; 
    Connection con=DriverManager.getConnection(url,"aa","bb"); //插入数据库 
    String sql="insert into test_img values (?,?,?)"; //问号里该怎么写
    //获取传值ID 
    String id=request.getParameter("id"); 
    //获取image的路径 
    String kk=request.getParameter("image"); 
    //转换成file格式 
    java.io.File filename=new java.io.File(kk); //将文件的长度读出,并转换成Long型 
    long l1=filename.length(); 
    int l2=(int)l1; //以流的格式赋值 
    FileInputStream fis=new FileInputStream(filename); 
    PreparedStatement ps =con.prepareStatement(sql); 
    ps.setString(1,id); 
    ps.setString(2,filename.getName()); 
    ps.setBinaryStream(3,fis,12); 
    //ps.setBinaryStream(3,fis,fis.available()); 
    ps.executeUpdate(); 
    //ps.execute(); 
    ps.close(); 
    fis.close(); 
    con.close(); 
    out.println("ok!!!"); 
    %>
      

  2.   

    首先在数据库中存储Image的应该是一个Blob或者其他,那么就将图像文件用流: FileInputStream input = new FileInputStream(path);

    int size = input.available();
    byte[] bytes = new byte[size];//PS:较大的文件可能会有内存溢出等问题
    input.read(bytes);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    ByteArrayOutputStream inStream = new ByteArrayOutputStream();
    byteArrayOutputStream.write(bytes);
    if ((size % 3) == 1) {
    byteArrayOutputStream.write(0);
    byteArrayOutputStream.write(0);
    } else if ((size % 3) == 2) {
    byteArrayOutputStream.write(0);
    }

    byteArrayOutputStream.writeTo(MimeUtility.encode(inStream, "base64"));

    code = inStream.toString();

    input.close();
    byteArrayOutputStream.close();
    inStream.close();将所得的code字符串保存到数据库。同理从数据库取出字符串反解析:(PS:这里是转成SWT中Image)
    ByteArrayInputStream m_oBin = new ByteArrayInputStream(image.getBytes());

    InputStream m_oInS = null;
    org.eclipse.swt.graphics.Image m_oImage = null;
    try {
    m_oInS = MimeUtility.decode(m_oBin, "base64");

    m_oImage = new org.eclipse.swt.graphics.Image(null, m_oInS);

    m_oBin.close();
    } catch (Exception e) {

    } finally{//关闭流
    try {
    m_oBin.close();
    } catch (IOException e) {

    }
    }

    return m_oImage;
      

  3.   

    不过他这是JSP程序,应该和Eclipse没什么关系,应该换成Java的Image。