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

在ORACLE中可以使用LONG类型保存大文本

阅读更多

在ORACLE中可以使用LONG类型保存大文本,但是操作LONG类型的数据和一般的数据类型不同,下面就举例说明如何将数据保存到LONG类型的字段中.

保存数据到LONG类型的字段中,下面将使用一个表进行测试,该表的创建语句如下:

CREATE TABLE T_LONGTEST
(
  ID        INTEGER                             NOT NULL,
  FILENAME  VARCHAR2(100 BYTE),
  CONTENT   LONG
)
LOGGING
NOCACHE
NOPARALLEL;

CREATE UNIQUE INDEX PK_T_LONGTEST ON T_LONGTEST
(ID)
LOGGING
NOPARALLEL;

ALTER TABLE T_LONGTEST ADD (
  CONSTRAINT PK_T_LONGTEST PRIMARY KEY (ID));

插入LONG类型的数据

    String fileName = file.getAbsolutePath();
    long length;
    if (!file.exists()) {
        logger.error("The file <" + fileName + "> is not exists");
        return;
    }
    length = file.length();
    BufferedReader bufReader = new BufferedReader(new FileReader(file));
    Integer id = Integer.valueOf(PubFun1.CreateMaxNo(TEST_LONG_ID, 1));
    PreparedStatement pstmt = con.prepareStatement(INSERT_LONG_SQL);
    pstmt.setObject(1, id);
    pstmt.setObject(2, fileName);
    pstmt.setCharacterStream(3, bufReader, (int) length);
    int retValue = pstmt.executeUpdate();
    if (retValue != 1) {
        logger.error("Error on insert value");
    }
    bufReader.close();
    pstmt.close();

INSERT_LONG_SQL的值为:
INSERT INTO T_LONGTEST(ID, FILENAME, CONTENT) VALUES (?, ?, ?)
注意需要使用setCharacterStream方法设置LONG类型的字段的值.

读取LONG类型的数据

读取也需要使用Stream的方式来读取,下面的代码片断说明了读取LONG类型的字段的方法.
    PreparedStatement pstmt = con.prepareStatement(QUERY_LONG_COL_SQL);
    pstmt.setObject(1, id);
    ResultSet rs = pstmt.executeQuery();
    if (rs.next()) {
        Reader reader = rs.getCharacterStream(1);
        BufferedReader bufReader = new BufferedReader(reader);
        StringBuffer strBuf = new StringBuffer();
        String line;
        while ((line = bufReader.readLine()) != null) {
            strBuf.append(line);
            strBuf.append("\r\n");
        }
        bufReader.close();
        System.out.println("The content is:" + strBuf.toString());
    }
QUEYR_LONG_COL_SQL的取值为:SELECT CONTENT FROM T_LONGTEST WHERE ID=?

更新LONG类型的数据

更新LONG类型的方法和插入的代码是一样的,只是SQL语句不同.下面的代码断说明了如何更新LONG类型的数据.(这个例子没有使用T_LONGTEST表)
    StringReader reader = new StringReader(xmlString);
    pstmt = con
            .prepareStatement(REPORT_MODEL_CONTENT_UPDATE_SQLSTRING);
    pstmt.setCharacterStream(1, reader, xmlString.length());
    pstmt.setInt(2, reportModelId);
    if (pstmt.executeUpdate() == 0) {
        logger
                .error("Error on update");
    }
    reader.close();
REPORT_MODEL_CONTENT_UPDATE_SQLSTRING的取值为:
UPDATE REPORT_MODEL SET CONTENT=? WHERE REPORT_MODEL_ID=?

总结:

从上面的例子可以看到,操作LONG类型的字段主要是通过CharacterStream,如果是更新数据库或者将数据插入到数据库中使用PreparedStatement的setCharacterStream,并且传入Reader类型的参数和字符串的长度.如果是检索数据库中的LONG类型的数据,那么使用getCharacterStream方法,获得一个Reader类型的对象,然后就可以从其中获取LONG类型的数据了.

分享到:
评论

相关推荐

    Oracle实用教程_04章_Oracle数据类型和函数[整理].pdf

    Oracle 数据类型的使用可以提高应用程序的效率和可靠性,但需要注意的是,在使用 CHAR 型字段记录文本信息时,需要小心 CHAR 型字段的长度限制和空格填充问题。 Oracle 数据类型的选择取决于应用程序的需求和实际...

    Oracle SQL Handler (Oracle客户端工具) V3.1

    能查看、编辑大型的文本字段(如 CLOB, LONG) &lt;2&gt; 运行命令 "desc tablename" 能清楚地显示表的所有列(包括名称、数据类型及长度、默认值、非空)、所有的索引、所有的约束条件(主键、唯一键、检查键、子表、外键...

    赤兔Oracle数据库恢复软件 v11.6.zip

    如图所示,这是软件的操作界面,用户可以在这里实现自己所需要的各种功能。 赤兔Oracle数据库恢复软件软件卸载: 对于比较难卸载的,在这里我向大家推荐新毒霸-软件管理工具,可以闪电卸载你所不需要的软件。或者...

    Oracle8i_9i数据库基础

    §15.4 在 PL/SQL 中使用 sqlcode,sqlerrm 273 第十六章 存储过程和函数 276 §16.1 引言 276 §16.2 存储过程 276 §16.2.1 创建过程 276 §16.2.2 使用过程 278 §16.2.3 开发存储过程步骤 279 §16.2.3.1 编辑...

    MySQL存储文本和图片的方法

    Clob 长文本类型 (MySQL中不支持,使用的是text) Blob 二进制类型 MySQL数据库 Text 长文本类型 TINYTEXT: 256 bytes TEXT: 65,535 bytes =&gt; ~64kb MEDIUMTEXT: 16,777,215 bytes =&gt; ~16MB LONGTEXT: 4,294,...

    Toad 使用快速入门

    使用书签功能,可以在大量SQL语句里,快速定位某个语句所在位置  SQL Editor本身具有强大的编辑功能,非常方便编辑SQL语句。  强大的快捷键支持和工具栏快速按钮的支持,更加高效编写(很多快捷键可以自己...

    ob9数据库查看工具中文版.rar

    可以实现从资源浏览器的拖放功能,如果已经将SQL语句保存到文件中的情况下,还可以实现仅使用鼠标即可执行SQL的功能。数据库管理者功能以GUI的形式实现用户,表空间,回滚段的创建和编辑。另外,也可以显示连接中的...

    PL/SQL 基础.doc

    (在此里层,对其他里层则不影响,想要不影响此里层的话可以使用标号标注外层); ---- 第四章 PL/SQL控制语句 ---- 1. 条件语句 IF boolean_expression1(条件1) THEN ... ELSIF boolean_expression2(条件2) ...

    数据库基础

    §15.4 在 PL/SQL 中使用 sqlcode,sqlerrm 273 第十六章 存储过程和函数 276 §16.1 引言 276 §16.2 存储过程 276 §16.2.1 创建过程 276 §16.2.2 使用过程 278 §16.2.3 开发存储过程步骤 279 §16.2.3.1 编辑...

    整理后java开发全套达内学习笔记(含练习)

    long类型值,需跟L或l在数据后;float类型要跟f或F;或强制类型转换 科学计数法:12.5E3 类型转换默认序列: byte &gt; short &gt; int &gt; long &gt; float &gt; double char 」 注意:默认类型转换(自动类型提升)会丢失精度...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! ...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    Java面试宝典2010版

    10、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 11、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp...

    最新Java面试宝典pdf版

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例283 在查询语句中使用字符串函数 实例284 在查询中使用日期函数 实例285 在查询时为表中的空字段添加默认信息 第10章 打印与报表技术 10.1 基础报表打印 实例286 基于文档/视图结构的打印 实例287 基于...

    Java面试笔试资料大全

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例283 在查询语句中使用字符串函数 实例284 在查询中使用日期函数 实例285 在查询时为表中的空字段添加默认信息 第10章 打印与报表技术 10.1 基础报表打印 实例286 基于文档/视图结构的打印 实例287 基于...

Global site tag (gtag.js) - Google Analytics