`
phoenix007
  • 浏览: 436134 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle10对clob的处理简单化了

阅读更多

在oracle10g中对于大字段clob的处理简化了,可以像varchar那样的setString(str)和getString("colum_name)来插入和取值了.

不需要再像9i 那样用流进写入读出了.

但是需要使用PreparedStatement ,(用Statement和话会添不了值,我测试没有通过)

处理clob的完整方法方法如下,

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.OracleDriver;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Properties;


public class ClobManipulationIn10g {
    private Connection conn = null;
    private String url = null;
    private String user = null;
    private String password = null;
    private Properties props = new Properties();
    private String fileName = null;

    public ClobManipulationIn10g(String fileName) {
        this.fileName = fileName;
    }


    public static void main(String[] args) throws SQLException {

        ClobManipulationIn10g clobManipulationIn10g = new ClobManipulationIn10g("C://工作交流单[规].html");

        DriverManager.registerDriver(new OracleDriver());

        String dbUrl = "jdbc:oracle:thin:@localhost:1521:xe";
        clobManipulationIn10g.url = dbUrl;

        clobManipulationIn10g.user = "shanxi";

        clobManipulationIn10g.password = "shanxi";
    
        clobManipulationIn10g.props.put("user", clobManipulationIn10g.user);
        clobManipulationIn10g.props.put("password", clobManipulationIn10g.password);
        clobManipulationIn10g.props.put("SetBigStringTryClob", "true");

        clobManipulationIn10g.selectClob();

    }


    private void insertClob() throws SQLException {

        PreparedStatement pstmt = null;
        PreparedStatement ps2=null;
        try {

            if ((conn == null) || conn.isClosed()) {

                conn = DriverManager.getConnection(this.url, this.props);
            }
            String str = this.readFile();

            String sql="insert into tbs(tid,tname,tclob) values(1,'aaaaa',empty_clob())";
            String sql2="update tbs set tclob=?";
           pstmt = conn.prepareStatement(sql);
            pstmt.executeUpdate();
            
            pstmt = conn.prepareStatement(sql2);
           pstmt.setString(1, str);
            pstmt.executeUpdate();
    
            
        } catch (SQLException sqlex) {
      
            System.out.println("SQLException while connecting and inserting into " +
                    "the database table: " + sqlex.toString());
        } catch (Exception ex) {
            System.out.println("Exception while connecting and inserting into the" +
                    " database table: " + ex.toString());
        } finally {
     
            if (pstmt != null) {
                pstmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }
    
      private void updateClob() throws SQLException {

        PreparedStatement pstmt = null;
        try { 
            if ((conn == null) || conn.isClosed()) { 
                conn = DriverManager.getConnection(this.url, this.props);
            }          
            String str = this.readFile(); 
            String sql = "update tbs set tname='bbbb', tclob=? where tid=1";    
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, str);
   
            pstmt.executeUpdate();
        } catch (SQLException sqlex) {
      
            System.out.println("SQLException while connecting and inserting into " +
                    "the database table: " + sqlex.toString());
        } catch (Exception ex) {
            System.out.println("Exception while connecting and inserting into the" +
                    " database table: " + ex.toString());
        } finally {
      
            if (pstmt != null) {
                pstmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }
    
    private void selectClob() throws SQLException { 
        PreparedStatement pstmt = null;
        ResultSet rset = null;
        try {
            if ((conn == null) || conn.isClosed()) {     
                conn = DriverManager.getConnection(this.url, this.props);
            }

            String sqlCall = "SELECT * FROM tbs";
            pstmt = conn.prepareStatement(sqlCall);

            rset = pstmt.executeQuery();
   
            while (rset.next()) {
              String idval=rset.getString("tid");
              String nameval=rset.getString("tname");
              String clobVal = rset.getString("tclob");
                System.out.println("CLOB length: " + clobVal.length());
                System.out.println(idval);
                System.out.println(nameval);
                System.out.println(clobVal);
            }
        } catch (SQLException sqlex) {
                  
            System.out.println("SQLException while connecting and querying the " +
                    "database table: " + sqlex.toString());
        } catch (Exception ex) {
            System.out.println("Exception while connecting and querying the " +
                    "database table: " + ex.toString());
        } finally {
           
            if (rset != null) {
                rset.close();
            }
            if (pstmt != null) {
                pstmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }

    private void checkTables() {
        Statement stmt = null;
        ResultSet rset = null;
        try {
         
            if ((conn == null) || conn.isClosed()) {
              
                conn = DriverManager.getConnection(this.url, this.props);
            }
         
            stmt = conn.createStatement();
            rset = stmt.executeQuery(" SELECT table_name FROM user_tables " +
                    " WHERE table_name = 'aaa' ");
           
            if (!rset.next()) {
            
                stmt.executeUpdate(" CREATE TABLE aaa(clob_col CLOB)");
            }
        } catch (SQLException sqlEx) {
            System.out.println("Could not create table aaa : " + sqlEx.toString());
        } finally {
            try {
                if (rset != null) {
                    rset.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException ex) {
                System.out.println("Could not close objects in checkTables method : " + ex.toString());
            }
        }
    }
    private String readFile() throws FileNotFoundException, IOException {
        
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        String nextLine = "";
        StringBuffer sb = new StringBuffer();
        while ((nextLine = br.readLine()) != null) {
            sb.append(nextLine);
        }
     
        String clobData = sb.toString();
    
        return clobData;
    }
}

 

分享到:
评论

相关推荐

    ORACLE中CLOB字段转String类型

    - Oracle提供了强大的包`DBMS_LOB`来处理CLOB数据。 - 常用函数包括`DBMS_LOB.SUBSTR`和`DBMS_LOB.LENGTH`等。 ```sql DECLARE l_clob CLOB; l_length PLS_INTEGER; l_substring VARCHAR2(32767); BEGIN ...

    Oracle 插入超4000字节的CLOB字段的处理方法

    3. 创建一个新的OracleClob对象,使用OracleConnection实例初始化。 4. 创建一个OracleParameter对象,设置参数名、OracleDbType.Clob类型、OracleClob对象和输入方向。 5. 将OracleParameter对象添加到参数集合中。...

    Oracle LOB字段处理工具

    Oracle数据库系统中,LOB(Large Object)字段是用来存储大量数据的类型,如图像、音频、视频或大型文本文件。在数据库操作中,LOB字段的处理...对于处理大量非结构化数据的Oracle数据库环境,这类工具是必不可少的。

    Hibernate对BLOB CLOB操作

    在Java的持久化框架Hibernate中,BLOB和CLOB是用来处理大数据对象(Binary Large Object和Character Large Object)的。这两个类型常用于存储图像、视频、大文本等数据,因为它们可以容纳超过数据库标准列大小限制的...

    Mysql转oracle工具

    例如,MySQL的`VARCHAR2`对应Oracle的`VARCHAR2`,但MySQL的`TINYINT`在Oracle中可能是`NUMBER(3)`,`BLOB`和`CLOB`在两个系统中都有,但处理方式不同。 3. **对象权限和安全模型**: MySQL的权限管理相对简单,而...

    精通oracle 10g plsql 编程-学习笔记

    PL/SQL (Procedural Language for SQL) 是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据处理能力与过程化的编程能力,为数据库应用程序提供了强大的支持。PL/SQL允许开发者编写复杂的数据库应用程序,...

    Oracle.ManagedDataAccess.rar

    10. **高级特性**:ODP.NET还包括对LOB(大型对象)的支持,如BFILE、CLOB、NCLOB、BLOB等;支持高级复制、物化视图、分区表等功能。 在实际开发中,使用Oracle.ManagedDataAccess.dll不仅可以简化开发流程,还能...

    Oracle数据库学习指南

    27.如何对CLOB行字段执行全文检索 28.如何让你的SQL运行得更快 29.如何使‘CREATE TABLE AS SELECT’能支持ORDER BY 30.删除表内重复记录的方法 31.数据库安全性策略 32.数据库的查询优化技术. 33.提高...

    Oracle XML开发手册

    8. **PL/SQL与XML**:Oracle的PL/SQL编程语言提供了对XML的支持,包括XMLType变量、XML序列化和反序列化、XML函数和过程等,使得在PL/SQL中处理XML变得简单。 9. **XML Publisher**:Oracle XML Publisher是一款...

    dbutils的使用_事务处理_多表操作_oracle大数据处理

    Oracle数据库处理二进制数据方面,DBUtils提供了一些用于处理BLOB和CLOB数据类型的工具类。二进制大对象(BLOB)用于存储大量的二进制数据,比如图片、视频等,而字符大对象(CLOB)用于存储大量的文本数据。DBUtils...

    Oracle PL/JSON

    Oracle PL/JSON 是一个在 Oracle...总之,Oracle PL/JSON 为 Oracle 数据库提供了一套强大的 JSON 支持,使得在数据库级别处理 JSON 数据变得简单而高效,极大地扩展了 Oracle 在 Web 开发和大数据处理领域的应用能力。

    oracle与mysql的区别

    INSERT 和 UPDATE 时最大可操作的字符串长度小于等于4000 个单字节,如果要插入更长的字符串,请考虑字段用 CLOB 类型,方法借用 Oracle 里自带的 DBMS_LOB 程序包。插入修改记录前一定要做进行非空和长度判断,不能...

    oracle 解析xml

    在Oracle数据库中,XML数据可以被存储为CLOB类型,并通过多种方法进行处理。常用的XML处理函数包括`XMLType`、`XMLParse`、`XMLELEMENT`、`XMLFOREST`等。此外,Oracle还提供了强大的XPath表达式来帮助用户更方便地...

    Oracle企业面试题集锦

    2. **游标的作用**:游标允许用户逐行处理数据,执行插入、删除、更新等操作,而不像简单查询那样只能一次性返回所有结果。 ### Oracle中的函数与过程 1. **参数传递方式**:函数可以返回值,而过程不一定要返回值...

    ODAC delphi 连接ORACLE控件

    这套组件库提供了多种控件和类,使得开发人员可以方便地在Delphi或C++ Builder应用程序中集成对Oracle数据库的操作。 ODAC的核心功能包括: 1. **高速数据访问**:ODAC组件提供了直接与Oracle数据库通信的低级接口...

    oracle 19C驱动 ojdbc8.jar orai18n.jar

    ojdbc8.jar是Oracle JDBC驱动的主要部分,包含了对JDBC接口的实现,而orai18n.jar则包含了国际化的支持,处理不同语言和区域设置的相关功能。 ojdbc8.jar包含以下主要知识点: 1. **JDBC接口**:JDBC是Java API,...

    Oracle学习文档

    Oracle数据库因其强大的性能、安全性以及可扩展性而备受赞誉,适用于处理海量数据和高并发的业务场景。 Oracle提供了多种版本以适应不同的需求,如小型数据库适合于简单应用,如Access用于不超过100人的小规模应用...

    《Oracle 10数据库系统教程与上机指导》习题答案.doc

    根据提供的文档内容,我们可以归纳总结出《Oracle 10...以上内容概述了《Oracle 10数据库系统教程与上机指导》一书中的主要知识点,通过对这些知识点的学习,读者能够更好地理解和掌握Oracle数据库系统的各个方面。

    oracle最权威工具toad使用大全

    2. 角色与权限:Oracle采用角色和权限机制来控制用户对数据库的访问。角色是一组权限的集合,可以方便地授予或撤销一组用户的访问权限。 3. PL/SQL:Oracle的编程语言PL/SQL结合了SQL的查询能力与过程式编程语言的...

Global site tag (gtag.js) - Google Analytics