本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9694839
建立时间:2004年12月20日




[java语言]使用jdbc写入oracle的blob与clob字段
原创空间

邢红瑞 发表于 2005/4/26 9:24:45

很多人问我不使用spring,如何存取oracle的blob与clob字段,其实这样的例子很多的,只是大家没有仔细的寻找,我顺手写了存spring的imagedb的例子。 package jdbc; import java.sql.PreparedStatement;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Blob;import java.io.OutputStream;import java.sql.Statement;import java.io.File;import java.io.InputStream;import java.io.FileInputStream;import java.sql.Clob;import java.io.Writer;import org.springframework.util.FileCopyUtils; public class testLob {    // Create connection object.    static Connection conn = null;    public testLob() {    }     public static void insertdata() {        PreparedStatement pstmt = null;         try {            conn.setAutoCommit(false);            pstmt = conn.prepareStatement(                    "INSERT INTO IMAGEDB VALUES(? , EMPTY_BLOB() , EMPTY_CLOB())");            pstmt.setString(1, "rose");            pstmt.executeUpdate();            // Execute SQL statement             pstmt = conn.prepareStatement(                    "SELECT CONTENT ,DESCRIPTION FROM IMAGEDB WHERE IMAGE_NAME = 'rose' FOR UPDATE");            ResultSet lobrs = pstmt.executeQuery();            lobrs.next();            Blob conblob = lobrs.getBlob(1);            File imgFile = new File("d:\\1.jpg");            InputStream imgFileStream = new FileInputStream(imgFile);            OutputStream blobOutputStream = ((oracle.sql.BLOB) conblob).                                            getBinaryOutputStream();             FileCopyUtils.copy(imgFileStream, blobOutputStream);            imgFileStream.close();            blobOutputStream.close();            //            StringBuffer sb = new StringBuffer();            for (int i = 0; i < 1024; i++) {                sb.append("唉");            }            // Get the Clob locator and open an output stream for the Clob            Clob descClob = lobrs.getClob(2);             Writer clobWriter = ((oracle.sql.CLOB) descClob).                                getCharacterOutputStream();             clobWriter.write(sb.toString());            clobWriter.close();            conn.commit();            conn.setAutoCommit(true);        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                pstmt.close(); // Close PreparedStatement             } catch (SQLException ex) {                ex.printStackTrace();            }        }    }     /*     * Method that gets database connection and returns the same.     */    public static void getConnection() throws SQLException {        // Load Oracle driver.        DriverManager.registerDriver(new oracle.jdbc.OracleDriver());         try {            // Connect to the database.            conn = DriverManager.getConnection(                    "jdbc:oracle:thin:@localhost:mydb",                    "scott", "tiger");        } catch (SQLException sqlex) {            System.out.println("SQLException while getting db connection: " +                               sqlex);            if (conn != null) {                conn.close();            }        } catch (Exception ex) {            System.out.println("Exception while getting db connection: " + ex);            if (conn != null) {                conn.close();            }        }    }     public static void main(String[] args) {        try {            getConnection();            insertdata();         } catch (Exception e) {            e.printStackTrace();        }    } }其中使用org.springframework.util.FileCopyUtils类操作输入输出流,我是spring的拥护者嘛。


阅读全文(5875) | 回复(3) | 编辑 | 精华
 


回复:使用jdbc写入oracle的blob与clob字段
原创空间

邢红瑞发表评论于2005/8/3 15:22:43

blob字段不用删除,删除也不腾出数据库空间


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:使用jdbc写入oracle的blob与clob字段
原创空间

三四三(游客|61.170.147.252)发表评论于2005/8/3 14:18:43

利用上面的代码不能删除Blob,但是在PL/SQL就可以删除,这是什么回事?

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:使用jdbc写入oracle的blob与clob字段
原创空间

三四三(游客|61.170.147.252)发表评论于2005/8/3 14:16:03

那如何删除BLOB数据呢? stmt.executeUpdate("UPDATE tb_blob_file SET detail=EMPTY_BLOB() WHERE filename='"+infile+"'");    stmt.executeUpdate("delete tb_blob_file where filename='"+infile+"'");

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.051 second(s), page refreshed 144755642 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号