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

java oracle clob

阅读更多
Sql代码 复制代码
  1. create table TEST_CLOB   
  2. (   
  3.   ID      INTEGER not null,   
  4.   NAME    VARCHAR2(20),   
  5.   CONTENT CLOB   
  6. )   
  7. alter table TEST_CLOB   
  8.   add primary key (ID);  
create table TEST_CLOB
(
  ID      INTEGER not null,
  NAME    VARCHAR2(20),
  CONTENT CLOB
)
alter table TEST_CLOB
  add primary key (ID);

 

Java代码 复制代码
  1. package com.logcd.common;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.File;   
  5. import java.io.FileInputStream;   
  6. import java.io.InputStreamReader;   
  7. import java.io.Reader;   
  8. import java.io.Writer;   
  9. import java.net.HttpURLConnection;   
  10. import java.net.URL;   
  11. import java.sql.Connection;   
  12. import java.sql.DriverManager;   
  13. import java.sql.ResultSet;   
  14. import java.sql.SQLException;   
  15. import java.sql.Statement;   
  16.   
  17. import org.apache.commons.io.FileUtils;   
  18.   
  19. import oracle.sql.CLOB;   
  20.   
  21. public class OracleClob {   
  22.   
  23.     public static void main(String[] args) {   
  24.   
  25.         Integer id = saveClobDataUseSQL("测试", getFileContentAsString(   
  26.                 "D:/uploadDir/test.txt"true));   
  27.   
  28.         readClobDataUseSQL(id, new File("D:/uploadDir/test2.txt"));   
  29.     }   
  30.   
  31.     /**  
  32.      * 保存Clob数据  
  33.      *   
  34.      * @param name  
  35.      *            数据名称  
  36.      * @param data  
  37.      *            字串数据  
  38.      */  
  39.     @SuppressWarnings("deprecation")   
  40.     public static Integer saveClobDataUseSQL(String name, String data) {   
  41.         Connection conn = getConnection();   
  42.         Integer id = (int) (Math.random() * 100000);   
  43.   
  44.         StringBuilder sqlBuilder = new StringBuilder();   
  45.         try {   
  46.             conn.setAutoCommit(false);   
  47.             Statement stmt = conn.createStatement();   
  48.   
  49.             sqlBuilder.append("insert into TEST_CLOB(ID, NAME, CONTENT) ");   
  50.             sqlBuilder.append("values ( " + id);   
  51.             sqlBuilder.append(",'" + name + "'");   
  52.             sqlBuilder.append(", empty_clob()) ");// 插入一个空对象empty_clob()   
  53.   
  54.             stmt.executeUpdate(sqlBuilder.toString());   
  55.             // 锁定数据行进行更新,注意“for update”语句   
  56.             String sqlUpd = "select CONTENT from TEST_CLOB where ID = " + id   
  57.                     + " for update";   
  58.             ResultSet rs = stmt.executeQuery(sqlUpd);   
  59.             if (rs.next()) {   
  60.                 // 得到java.sql.Clob对象后强制转换为oracle.sql.CLOB   
  61.                 CLOB clob = (CLOB) rs.getClob("CONTENT");   
  62.                 Writer outStream = clob.setCharacterStream(0L);   
  63.                 // data是传入的字符串,定义:String data   
  64.                 char[] c = data.toCharArray();   
  65.                 outStream.write(c, 0, c.length);   
  66.   
  67.                 outStream.flush();   
  68.                 outStream.close();   
  69.   
  70.                 conn.commit();   
  71.                 stmt.close();   
  72.             }   
  73.   
  74.         } catch (Exception e) {   
  75.             try {   
  76.                 conn.rollback();   
  77.                 id = null;   
  78.             } catch (SQLException e1) {   
  79.                 e1.printStackTrace();   
  80.             }   
  81.             e.printStackTrace();   
  82.         } finally {   
  83.             try {   
  84.                 conn.close();   
  85.             } catch (SQLException e) {   
  86.                 e.printStackTrace();   
  87.             }   
  88.         }   
  89.         return id;   
  90.     }   
  91.   
  92.     /**  
  93.      * 读出数据并存成文件  
  94.      *   
  95.      * @param id  
  96.      * @param file  
  97.      */  
  98.     public static void readClobDataUseSQL(Integer id, File file) {   
  99.         Connection conn = getConnection();   
  100.         try {   
  101.             Statement st = conn.createStatement();   
  102.             String sql = "select CONTENT from TEST_CLOB where ID = " + id;   
  103.             ResultSet rs = st.executeQuery(sql);   
  104.   
  105.             if (rs.next()) {   
  106.   
  107.                 CLOB clob = (CLOB) rs.getClob("CONTENT");   
  108.   
  109.                 String result = convertClobToString(clob);   
  110.                 System.out.println(result);   
  111.                 FileUtils.writeStringToFile(file,result, "utf-8");   
  112.             }   
  113.         } catch (Exception e) {   
  114.             e.printStackTrace();   
  115.         } finally {   
  116.             try {   
  117.                 conn.close();   
  118.             } catch (SQLException e) {   
  119.                 e.printStackTrace();   
  120.             }   
  121.         }   
  122.   
  123.     }   
  124.   
  125.     /**  
  126.      * 将CLOB转换成字串  
  127.      * @param clob  
  128.      * @return  
  129.      */  
  130.     public static String convertClobToString(CLOB clob) {   
  131.         String reString = "";   
  132.         try {   
  133.             Reader is = clob.getCharacterStream();// 得到流   
  134.             BufferedReader br = new BufferedReader(is);   
  135.             String s = br.readLine();   
  136.             StringBuffer sb = new StringBuffer();   
  137.             while (s != null) {   
  138.                 sb.append(s);   
  139.                 sb.append("\n");   
  140.                 s = br.readLine();   
  141.             }   
  142.             reString = sb.toString().trim();   
  143.         } catch(Exception e) {   
  144.             e.printStackTrace();   
  145.         }   
  146.         return reString;   
  147.     }   
  148.   
  149.     /**  
  150.      * 取得数据库连接  
  151.      *   
  152.      * @return  
  153.      */  
  154.     public static Connection getConnection() {   
  155.         String driver = "oracle.jdbc.driver.OracleDriver";   
  156.         String url = "jdbc:oracle:thin:@195.2.199.5:1521:orcl";   
  157.         Connection conn = null;   
  158.         try {   
  159.             Class.forName(driver);   
  160.             conn = DriverManager.getConnection(url, "testdb""logcd");   
  161.         } catch (ClassNotFoundException e) {   
  162.             e.printStackTrace();   
  163.         } catch (SQLException ex) {   
  164.             ex.printStackTrace();   
  165.         }   
  166.         return conn;   
  167.     }   
  168.   
  169.     /**  
  170.      * 读取文件内容  
  171.      *   
  172.      * @param _url  
  173.      * @param isLocal  
  174.      * @return  
  175.      */  
  176.     public static String getFileContentAsString(String _url, boolean isLocal) {   
  177.         StringBuilder strb = new StringBuilder();   
  178.         try {   
  179.             InputStreamReader read = null;   
  180.             ;   
  181.             if (!isLocal) {   
  182.                 URL url = new URL(_url);   
  183.                 HttpURLConnection connection = (HttpURLConnection) url   
  184.                         .openConnection();   
  185.                 read = new InputStreamReader(connection.getInputStream());   
  186.             } else {   
  187.                 File file = new File(_url);   
  188.                 read = new InputStreamReader(new FileInputStream(file));   
  189.             }   
  190.             BufferedReader br = new BufferedReader(read);   
  191.   
  192.             char[] cbuf = new char[1024];   
  193.             while (br.read(cbuf) != -1) {   
  194.                 strb.append(cbuf);   
  195.             }   
  196.         } catch (Exception e) {   
  197.             e.printStackTrace();   
  198.         }   
  199.   
  200.         return strb.toString();   
  201.     }   
  202.   
  203. }  
分享到:
评论

相关推荐

    java读写oracle clob字段

    本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和Oracle JDBC驱动库。在上述代码中,我们看到`import oracle.jdbc.driver.OracleDriver;`,这表示我们将使用Oracle...

    运用Java如何存取Oracle中的CLOB类型字段

    ### 运用Java如何存取Oracle中的CLOB类型字段 #### 概述 在数据库操作中,经常会遇到处理大量文本数据的需求,例如存储文章、新闻、文档等。Oracle数据库提供了CLOB(Character Large Object)类型来存储大容量的...

    图片存入Oracle中,用clob和blob两种方式

    - **准备环境**:首先确保已经安装了Oracle数据库客户端和相应的驱动程序,例如JDBC驱动,以便通过编程语言(如Java、Python等)与数据库交互。 - **连接数据库**:使用相应的连接字符串、用户名和密码建立与...

    java存储oracle中的clob类型

    ### Java存储Oracle中的CLOB类型知识点详解 #### 一、CLOB类型简介及Java操作方法 CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。...

    Oracle导出Clob,Blob工具

    Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...

    java中操作oracle的CLOB字段精解

    Java 中操作 Oracle 的 CLOB 字段精解 Java 中操作 Oracle 的 CLOB 字段是一种常见的操作,在实际开发中,我们经常需要在 Oracle 数据库中存储和读取大型文本数据,这时就需要使用 CLOB(Character Large OBject)...

    JAVA对clob的操作

    CLOB操作与BLOB操作类似,但是在获取java.sql.Clob对象后需要强制转换为oracle.sql.CLOB对象,以便使用getCharacterOutputStream()方法将数据写入CLOB字段。 三、出库操作 出库操作可以使用ResultSet.getBlob()或...

    sql server中的image类型的数据导出到oracle的clob字段中

    为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java 语言和 JDBC 驱动程序。下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: ...

    clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle

    对于CLOB和BLOB字段,Oracle JDBC驱动提供了`oracle.jdbc.driver.OracleClob`和`oracle.jdbc.driver.OracleBlob`类,它们实现了Java的标准接口`java.sql.Clob`和`java.sql.Blob`。这两个接口提供了读取和写入大数据...

    读取oracle数据库中clob字段的值

    在Java中,读取Oracle数据库中的CLOB字段可以通过以下步骤实现: 1. **获取CLOB对象**: 首先,通过执行查询语句并从结果集中获取CLOB对象。示例代码中的`lookmail[6]`表示从查询结果的第7个元素(下标为6)获取...

    ibatis oracle clob

    标题 "ibatis oracle clob" 涉及到的是在Java开发中,使用iBATIS框架与Oracle数据库交互时处理CLOB(Character Large Object)类型数据的问题。CLOB是Oracle数据库用于存储大文本数据(如XML文档、长篇文章等)的...

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    标题中的“jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标”涉及到三个主要的Java数据库编程知识点:JDBC连接、Oracle数据库中的CLOB类型处理以及通过Java调用存储过程处理输出游标。 1. JDBC...

    hibernate存取oracle的clob

    这里需要注意的是,`Clob` 类型在 Java 中表示为 `java.sql.Clob`,而在 Oracle 中则使用 `oracle.sql.CLOB`。 #### 3. 存储 CLOB 数据 接下来介绍如何通过 Hibernate 将 CLOB 数据保存到 Oracle 数据库中。 **...

    Oracle bolb转换Base64 CLOB.txt

    Oracle slq bolb转换Base64 CLOB

    iBATIS操作Oracle CLOB数据

    综上所述,通过iBATIS操作Oracle的CLOB数据,需要对iBATIS的映射文件、类型处理器以及Oracle的CLOB特性有深入理解。在实际开发中,合理配置和使用这些机制,能够有效地管理大量文本数据,同时保持代码的简洁性和可...

    java调用oracle含有clob参数的存储过程.doc

    "Java 调用 Oracle 含有 CLOB 参数的存储过程" Java 调用 Oracle 含有 CLOB 参数的存储过程是一种常用的数据库操作方式,下面是该过程的详细介绍: 1. 连接数据库 在 Java 中连接 Oracle 数据库需要使用 Oracle ...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    2. **反射调用**:对于 `weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB` 类型的对象,使用 Java 反射机制调用 `getVendorObj()` 方法,该方法返回一个 `oracle.sql.CLOB` 类型的对象。 3. **CLOB 数据读取**:无论是...

    java读取oracle数据库中clob字段.txt

    java读取oracle数据库中clob字段 把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来

    java操作clob

    在 Java 中操作 Oracle 数据库中的 CLOB(Character Large Object)字段是一项常见的任务。CLOB 类型用于存储大量文本数据,如长篇文章或文档。本教程将详细介绍如何在 Java 中使用 JDBC 和 JNDI 连接访问 Oracle ...

Global site tag (gtag.js) - Google Analytics