在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 中的基本数据类型,并讨论它们的特点和使用区别。 字符类型 Oracle 中有多种字符类型,包括 char、varchar、varchar2、long 等。 * char(n):定长字符串,最大长度为 2000 字节。char ...
在Oracle 10g及更高版本中,建议使用Clob类型代替Long,因为Clob提供了更好的性能和功能。 2. Raw类型: Raw数据类型用于存储二进制数据,如MAC地址或加密的密码。它是一个固定长度的字节序列,长度可以从1到2000...
总结来说,Oracle 和 SQL Server 数据类型在很多方面有相似之处,如字符串、数字、日期/时间、二进制数据类型,但在细节上有所差异,如长度限制、Unicode 支持和特定用途的类型(如 Oracle 的 Bfile 和 SQL Server ...
在SELECT操作中,你需要指定如何检索和处理这些字段类型的数据,例如使用游标(Cursor)逐行读取LONG和BLOB数据,因为它们可能太大而无法一次性加载到内存。 在实际应用中,处理BLOB字段时,通常会使用Oracle的...
在Oracle中,数据类型可以分为基本数据类型、对象数据类型和大型对象数据类型。以下是对Oracle主要数据类型的详细说明: 1. **Char(n)**: 这是一种定长字符串数据类型,其中n的范围是1到2000字节。如果未指定长度,...
下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符数据,最大可达到4GB。虽然主要用于存储文本,但在本例中,由于图片可以被转换...
在ORACLE数据库中,有多种数据类型用于存储不同类型的值,包括VARCHAR2、LONG、RAW以及BLOB。这些数据类型在处理不同类型的数据时各有特点,下面将详细解释它们的用法,并提供相应的读写示例。 1. VARCHAR2:这是...
然而,由于Long字段在处理大量数据时性能较低,且不支持索引,所以在现代Oracle数据库设计中,通常推荐使用Clob类型代替Long。 2. Raw类型:Raw数据类型用于存储二进制数据,如用户IC卡的MAC地址(EMP_IC_MACRAW(50...
Oracle 数据类型的使用可以提高应用程序的效率和可靠性,但需要注意的是,在使用 CHAR 型字段记录文本信息时,需要小心 CHAR 型字段的长度限制和空格填充问题。 Oracle 数据类型的选择取决于应用程序的需求和实际...
BLOB/CLOB**: 随着 Oracle 对大对象数据类型的支持增强,`LONG` 类型正逐步被淘汰,推荐使用 `BLOB` 或 `CLOB` 来存储大量数据。 - **NUMBER**: 这是一个非常灵活且强大的数据类型,可以处理几乎所有的数值计算需求...
在Oracle数据库中,当需要存储超过VARCHAR2类型最大限制(4000个字符或2000个汉字)的数据时,可以使用LOB(Large Object)类型,包括BLOB(Binary Large OBject)、CLOB(Character Large OBject)以及BFILE。...
Oracle数据库是世界上最流行的关系型数据库管理系统之一,其强大的功能和高效的数据管理能力使其在企业级应用中广泛应用。本文将深入探讨Oracle数据类型及其存储方式,帮助读者理解和掌握Oracle数据库的基础知识。 ...
在VB中使用OO40(Oracle Objects for OLE)可以实现与Oracle数据库的无缝集成,简化大对象的读取、写入和管理。 OO40是Oracle公司推出的一种产品,它支持Microsoft的COM(Component Object Model)和ActiveX技术,...
在现实世界中,为了有效地保存和处理不同类型的信息,我们需要使用不同的数据类型。例如,整型数据用于表示整数值,支持常见的数学运算如加、减、乘、除;浮点型数据则用于表示带有小数点的数值;而字符或字符串类型...
Oracle 数据库中有多种基本数据类型,包括 char、varchar2、number、date、long、raw、long raw、blob、clob、nclob、bfile 等。这些数据类型是我们在设计数据库时最基本的组成部分,了解每种数据类型的特点和使用...
在 Java 中,我们可以使用 `oracle.sql.CLOB` 类来操作 Oracle 数据库中的 CLOB 型数据。以下是一个简单的示例,展示如何插入、读取 CLOB 值: ```java import java.io.BufferedReader; import java.io.IOException...
在`NUMBER`类型中,小数点可以任意移动,因此小数位可以在整数部分之前或之后。 #### §2.3 number 的精度和小数位 `p`定义了数值的最大精度,`s`定义了小数部分的精度。如果`s`为负,则整数部分的精度增加。 ###...
- `LONG`:过时的数据类型,不再推荐使用,适合存储大量文本,但已被LOB类型取代。 - `NCHAR()`和`NVARCHAR2()`:与`CHAR`和`VARCHAR2`类似,但用于存储Unicode字符,确保多语言支持。 2. **Numeric数据类型**: ...
在Oracle中,数据类型是定义列或变量如何存储和处理数据的关键元素。以下是Oracle数据库中一些基本数据类型的详细说明: 1. **Char(n)**: Char是一种固定长度的字符串数据类型,长度范围为1到2000字节。即使实际...