在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类型的数据了.
分享到:
相关推荐
Clob 长文本类型 (MySQL中不支持,使用的是text) Blob 二进制类型 MySQL数据库 Text 长文本类型 TINYTEXT: 256 bytes TEXT: 65,535 bytes => ~64kb MEDIUMTEXT: 16,777,215 bytes => ~16MB LONGTEXT: 4,294,...
能查看、编辑大型的文本字段(如 CLOB, LONG) <2> 运行命令 "desc tablename" 能清楚地显示表的所有列(包括名称、数据类型及长度、默认值、非空)、所有的索引、所有的约束条件(主键、唯一键、检查键、子表、外键...
如图所示,这是软件的操作界面,用户可以在这里实现自己所需要的各种功能。 赤兔Oracle数据库恢复软件软件卸载: 对于比较难卸载的,在这里我向大家推荐新毒霸-软件管理工具,可以闪电卸载你所不需要的软件。或者...
§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 编辑...
使用书签功能,可以在大量SQL语句里,快速定位某个语句所在位置 SQL Editor本身具有强大的编辑功能,非常方便编辑SQL语句。 强大的快捷键支持和工具栏快速按钮的支持,更加高效编写(很多快捷键可以自己...
可以实现从资源浏览器的拖放功能,如果已经将SQL语句保存到文件中的情况下,还可以实现仅使用鼠标即可执行SQL的功能。数据库管理者功能以GUI的形式实现用户,表空间,回滚段的创建和编辑。另外,也可以显示连接中的...
(在此里层,对其他里层则不影响,想要不影响此里层的话可以使用标号标注外层); ---- 第四章 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 编辑...
long类型值,需跟L或l在数据后;float类型要跟f或F;或强制类型转换 科学计数法:12.5E3 类型转换默认序列: byte > short > int > long > float > double char 」 注意:默认类型转换(自动类型提升)会丢失精度...
你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! ...
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
10、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 11、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp...
5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...
实例283 在查询语句中使用字符串函数 实例284 在查询中使用日期函数 实例285 在查询时为表中的空字段添加默认信息 第10章 打印与报表技术 10.1 基础报表打印 实例286 基于文档/视图结构的打印 实例287 基于...
5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...
实例283 在查询语句中使用字符串函数 实例284 在查询中使用日期函数 实例285 在查询时为表中的空字段添加默认信息 第10章 打印与报表技术 10.1 基础报表打印 实例286 基于文档/视图结构的打印 实例287 基于...
5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...