代码如下:
String URL = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
Statement stmt;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(URL, "userName",
"passwd");
stmt = conn.createStatement();
String sql = "select d_image from display_table where autoid=1 for update";
ResultSet rs =stmt.executeQuery(sql);
if (rs.next()) {     
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);    
File file = new File("D:\\test.png");
//getBinaryOutputStream(); 这个方法已经过期,不知道用哪个替代
OutputStream outStream = blob.getBinaryOutputStream();
InputStream fin = new FileInputStream(file);
byte[] b = new byte[blob.getBufferSize()];
        int leng = 0;
        while ( (leng = fin.read(b)) != -1) {
          outStream.write(b, 0, leng);
        }
} }catch (ClassNotFoundException cnf) {
System.out.println("driver not find:" + cnf);
} catch (SQLException sqle) {
System.out.println("can't connection db:" + sqle);
} catch (Exception e) {
System.out.println("Failed to load JDBC/ODBC driver.");
};
无法插入图片
 blob.getBinaryOutputStream(); 这个方法提示过期

解决方案 »

  1.   


    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    OutputStream os = null;
    try {
    stmt = conn.createStatement();
    conn.setAutoCommit(false);
    stmt.executeUpdate("insert into t_image (id, image) values (2, empty_blob())");
    rs = stmt.executeQuery("select image from t_image where id=2 for update");
    if (rs.next()) {
    oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("image");
    os = blob.getBinaryOutputStream();
    InputStream is = new FileInputStream("D:/a.jpg");
    byte[] b = new byte[blob.getBufferSize()];
    int i = 0;
    while ((i = is.read(b)) != -1) {
    os.write(b,0,i);
    }
    }
    os.flush();
    os.close();
    conn.commit();
    conn.setAutoCommit(true);// 恢复现场