java 读写oracle中LONG类型的字段 [还未自己验证]
2006-07-25 13:52
543 查看
在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类型的数据了.
保存数据到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中LONG类型字段的存取
- 在oracle中字段类型LONG的使用注意事项
- 利用oracle long类型字段,插入大文本
- Java 存储和读取 oracle CLOB 类型字段的实用方法
- Java 存储和读取 oracle CLOB 类型字段的实用方法
- Java 存储和读取 oracle CLOB 类型字段的实用方法
- hibernate在SSH框架操作ORACLE Clob字段类型的读写改
- ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob)
- 关于java获取Oracle中date类型字段问题
- 记录:java执行mysql语句查询字段类型:timestamp返回页面显示会多出个 .0,自己如何处理的
- Oracle-Java字段类型转换
- java如何访问Oracle的long类型?
- 用java 操作 oracle 日期类型字段
- Oracle数据库Date类型字段读写经验、查看Oracle字符集及修改字符集
- hibernate在SSH框架操作ORACLE Clob字段类型的读写改
- 利用oracle long类型字段,插入大文本
- oracle long类型字段 ora-01704 字符串文字太长
- 在oracle中字段类型LONG的使用注意事项
- ORACLE的ALL_VIEWS数据字典text字段long类型问题
- oracle字段类型与java对象类型对照表