首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

JDBC 安插、修改 Oracle Lob字段

2012-11-05 
JDBC 插入、修改 OracleLob字段String DRIVER oracle.jdbc.driver.OracleDriver/*** ORACLE连接用URL*

JDBC 插入、修改 Oracle Lob字段

String DRIVER = "oracle.jdbc.driver.OracleDriver";     /**     * ORACLE连接用URL     */    private static final String URL = "jdbc:oracle:thin:@test2000:1521:orac";    /**     * 用户名     */    private static final String USER = "user";    /**     * 密码     */    private static final String PASSWORD = "pswd";    /**     * 数据库连接     */    private static Connection conn = null;    /**     * SQL语句对象     */    private static Statement stmt = null;    /**     * @roseuid 3EDA089E02BC     */    public LobPros()    {    }    /**     * 往数据库中插入一个新的CLOB对象     *     * @param infile - 数据文件     * @throws java.lang.Exception     * @roseuid 3EDA04A902BC     */    public static void clobInsert(String infile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 插入一个空的CLOB对象 */            stmt.executeUpdate("INSERT INTO TEST_CLOB VALUES ('111', EMPTY_CLOB())");            /* 查询此CLOB对象并锁定 */            ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");            while (rs.next()) {                /* 取出此CLOB对象 */                oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");                /* 向CLOB对象中写入数据 */                BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());                BufferedReader in = new BufferedReader(new FileReader(infile));                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                in.close();                out.close();            }            /* 正式提交 */            conn.commit();        } catch (Exception ex) {            /* 出错回滚 */            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * 修改CLOB对象(是在原CLOB对象基础上进行覆盖式的修改)     *     * @param infile - 数据文件     * @throws java.lang.Exception     * @roseuid 3EDA04B60367     */    public static void clobModify(String infile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 查询CLOB对象并锁定 */            ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");            while (rs.next()) {                /* 获取此CLOB对象 */                oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");                /* 进行覆盖式修改 */                BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());                BufferedReader in = new BufferedReader(new FileReader(infile));                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                in.close();                out.close();            }            /* 正式提交 */            conn.commit();        } catch (Exception ex) {            /* 出错回滚 */            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * 替换CLOB对象(将原CLOB对象清除,换成一个全新的CLOB对象)     *     * @param infile - 数据文件     * @throws java.lang.Exception     * @roseuid 3EDA04BF01E1     */    public static void clobReplace(String infile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 清空原CLOB对象 */            stmt.executeUpdate("UPDATE TEST_CLOB SET CLOBCOL=EMPTY_CLOB() WHERE ID='111'");            /* 查询CLOB对象并锁定 */            ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");            while (rs.next()) {                /* 获取此CLOB对象 */                oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");                /* 更新数据 */                BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());                BufferedReader in = new BufferedReader(new FileReader(infile));                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                in.close();                out.close();            }            /* 正式提交 */            conn.commit();        } catch (Exception ex) {            /* 出错回滚 */            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * CLOB对象读取     *     * @param outfile - 输出文件名     * @throws java.lang.Exception     * @roseuid 3EDA04D80116     */    public static void clobRead(String outfile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 查询CLOB对象 */            ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_CLOB WHERE ID='111'");            while (rs.next()) {                /* 获取CLOB对象 */                oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");                /* 以字符形式输出 */                BufferedReader in = new BufferedReader(clob.getCharacterStream());                BufferedWriter out = new BufferedWriter(new FileWriter(outfile));                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                out.close();                in.close();            }        } catch (Exception ex) {            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * 向数据库中插入一个新的BLOB对象     *     * @param infile - 数据文件     * @throws java.lang.Exception     * @roseuid 3EDA04E300F6     */    public static void blobInsert(String infile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 插入一个空的BLOB对象 */            stmt.executeUpdate("INSERT INTO TEST_BLOB VALUES ('222', EMPTY_BLOB())");            /* 查询此BLOB对象并锁定 */            ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");            while (rs.next()) {                /* 取出此BLOB对象 */                oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");                /* 向BLOB对象中写入数据 */                BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());                BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                in.close();                out.close();            }            /* 正式提交 */            conn.commit();        } catch (Exception ex) {            /* 出错回滚 */            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * 修改BLOB对象(是在原BLOB对象基础上进行覆盖式的修改)     *     * @param infile - 数据文件     * @throws java.lang.Exception     * @roseuid 3EDA04E90106     */    public static void blobModify(String infile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 查询BLOB对象并锁定 */            ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");            while (rs.next()) {                /* 取出此BLOB对象 */                oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");                /* 向BLOB对象中写入数据 */                BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());                BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                in.close();                out.close();            }            /* 正式提交 */            conn.commit();        } catch (Exception ex) {            /* 出错回滚 */            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * 替换BLOB对象(将原BLOB对象清除,换成一个全新的BLOB对象)     *     * @param infile - 数据文件     * @throws java.lang.Exception     * @roseuid 3EDA0505000C     */    public static void blobReplace(String infile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 清空原BLOB对象 */            stmt.executeUpdate("UPDATE TEST_BLOB SET BLOBCOL=EMPTY_BLOB() WHERE ID='222'");            /* 查询此BLOB对象并锁定 */            ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");            while (rs.next()) {                /* 取出此BLOB对象 */                oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");                /* 向BLOB对象中写入数据 */                BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());                BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                in.close();                out.close();            }            /* 正式提交 */            conn.commit();        } catch (Exception ex) {            /* 出错回滚 */            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * BLOB对象读取     *     * @param outfile - 输出文件名     * @throws java.lang.Exception     * @roseuid 3EDA050B003B     */    public static void blobRead(String outfile) throws Exception    {        /* 设定不自动提交 */        boolean defaultCommit = conn.getAutoCommit();        conn.setAutoCommit(false);        try {            /* 查询BLOB对象 */            ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222'");            while (rs.next()) {                /* 取出此BLOB对象 */                oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");                /* 以二进制形式输出 */                BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));                BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());                int c;                while ((c=in.read())!=-1) {                    out.write(c);                }                in.close();                out.close();            }            /* 正式提交 */            conn.commit();        } catch (Exception ex) {            /* 出错回滚 */            conn.rollback();            throw ex;        }        /* 恢复原提交状态 */        conn.setAutoCommit(defaultCommit);    }    /**     * 建立测试用表格     * @throws Exception     */    public static void createTables() throws Exception {        try {            stmt.executeUpdate("CREATE TABLE TEST_CLOB ( ID NUMBER(3), CLOBCOL CLOB)");            stmt.executeUpdate("CREATE TABLE TEST_BLOB ( ID NUMBER(3), BLOBCOL BLOB)");        } catch (Exception ex) {        }    }    /**     * @param args - 命令行参数     * @throws java.lang.Exception     * @roseuid 3EDA052002AC     */    public static void main(String[] args) throws Exception    {        /* 装载驱动,建立数据库连接 */        Class.forName(DRIVER);        conn = DriverManager.getConnection(URL,USER,PASSWORD);        stmt = conn.createStatement();        /* 建立测试表格 */        createTables();        /* CLOB对象插入测试 */        clobInsert("c:/clobInsert.txt");        clobRead("c:/clobInsert.out");        /* CLOB对象修改测试 */        clobModify("c:/clobModify.txt");        clobRead("c:/clobModify.out");        /* CLOB对象替换测试 */        clobReplace("c:/clobReplace.txt");        clobRead("c:/clobReplace.out");        /* BLOB对象插入测试 */        blobInsert("c:/blobInsert.doc");        blobRead("c:/blobInsert.out");        /* BLOB对象修改测试 */        blobModify("c:/blobModify.doc");        blobRead("c:/blobModify.out");        /* BLOB对象替换测试 */        blobReplace("c:/blobReplace.doc");        blobRead("c:/bolbReplace.out");        /* 关闭资源退出 */        conn.close();        System.exit(0);    }}

?

package com.copybzzh.test;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Date;import easy.sql.EasySQL;import easy.sql.Session;import easy.sql.SessionFactory;import easy.sql.io.TextFileWriter;public class CopyBzzh {    //根据数据库名查询对应表    public static void main(String[] args) {                File folderfiles = new File("d:" + File.separator + "images");//文件夹路径        File[] files = folderfiles.listFiles(); //获取所有文件        Session session = null;        PreparedStatement pst = null;        PreparedStatement pst2 = null;        java.sql.Statement stmt=null;        try {            session = SessionFactory.openSession(EasySQL.ORACLE, "jdbc:oracle:thin:@192.168.1.199:1521:oradb", "data", "data", false, EasySQL.ORACLE_DRIVER);            boolean defaultCommit = session.getConnection().getAutoCommit();            session.getConnection().setAutoCommit(false);            String str = "PhotoName                  State";            File file = new File(new Date().getTime() + ".txt"); //插入日志                        for (int i = 0; i < files.length; i++) { //循环遍历 文件夹下面图片                                String sfzh = files[i].getName().substring(0, files[i].getName().indexOf(".")); //获取文件名                                FileInputStream fis = new FileInputStream(files[i]);                                stmt = session.getConnection().createStatement();                                ResultSet rs = stmt.executeQuery("select zp from person2 where sfzh='" + sfzh + "' for update");//锁定选择文件                                System.out.println(files[i].getName()+"==开始");                                if (rs.next()) {                    /* 获取blob字段 */                    oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("zp");                                        /* 向BLOB对象中写入数据 */                    BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());                                        BufferedInputStream in = new BufferedInputStream(fis);                    int c1;                    while ((c1 = in.read()) != -1) {                        out.write(c1);                    }                                        /* 是否插入成功 */                    str += "\r\n";                    str += files[i].getName() + "      ok    "  ;                    in.close();                    out.close();                }else{                    str += "\r\n";                    str += files[i].getName() + " false    "  ;                }                                session.getConnection().commit();                String lineStr = "";                 fis.close();            }            session.close();            TextFileWriter.write(file, str);        } catch (FileNotFoundException e) {                        e.printStackTrace();                    } catch (SQLException e) {            try {                //出错回滚                session.rollback();            } catch (SQLException e1) {                                e1.printStackTrace();            }            e.printStackTrace();        } catch (Exception e) {            try {                //出错回滚                session.rollback();            } catch (SQLException e1) {                                e1.printStackTrace();            }            e.printStackTrace();        } finally {            try {                stmt.close();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}

?

热点排行