问题是这样的,我要将一些图片文件存放到数据库的BLOB字段中,当时我发现当图片过小时会插不进数据库,BLOB字段为空,这是什么原因呢?

解决方案 »

  1.   

    程序如下:
          conn = DriverManager.getConnection(
              "jdbc:oracle:thin:@192.168.100.13:1521:develop", "gzedu", "gzedu8756");
          conn.setAutoCommit(false);
          /* 插入一个空的CLOB对象 */
          stmt = conn.createStatement();
          stmt.executeUpdate("INSERT INTO movie1 (MovieID, MovieName, MoviePicture) VALUES ('1', '1', EMPTY_BLOB())");      /* 查询此CLOB对象并锁定 */
          rs = stmt.executeQuery(
              "SELECT MoviePicture FROM movie1 WHERE MovieID='1' FOR UPDATE");
          if (rs.next()) {
            /* 取出此CLOB对象 */
            BLOB blob = (BLOB) rs.getBlob("MoviePicture");        /* 向BLOB对象中写入数据 */
            BufferedOutputStream out = new BufferedOutputStream(blob.
                getBinaryOutputStream());
            BufferedInputStream in = new BufferedInputStream(new FileInputStream("screen.bmp"));
            int c;
            while ( (c = in.read()) != -1) {
              out.write(c);
            }
            in.close();
            out.close();      }      /* 正式提交 */
          conn.commit();
      

  2.   

    <%@ page contentType="text/html;charset=gb2312"%> 
    <%@ page import="java.sql.*" %> 
    <%@ page import="java.util.*"%> 
    <%@ page import="java.text.*"%> 
    <%@ page import="java.io.*"%> 
    <html> 
    <body> 
    <% 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    String url="jdbc:oracle:thin:@10.0.5.36:1521:ycrz2"; 
    Connection con=DriverManager.getConnection(url,"rsgl","rsgl"); 
    //插入数据库 
    //String sql="insert into test_img values (?,?,?)"; 
    //获取传值ID 
    String id=request.getParameter("id"); 
    //获取image的路径 
    String kk=request.getParameter("image"); 
    //转换成file格式 
    File filename=new File(kk); 
    //其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改 
    FileInputStream str=new FileInputStream(filename); 
    String sql="insert into img(id,name,pic) values('"+id+"',?,?)"; 
    PreparedStatement pstmt=con.prepareStatement(sql); 
    pstmt.setString(1,id); 
    pstmt.setBinaryStream(2,str,str.available()); 
    pstmt.execute(); 
    out.println("Success,You Have Insert an Image Successfully"); 
    %>