- 浏览: 411133 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (244)
- struts2 (15)
- ognl (1)
- hibernate (17)
- gwt (17)
- GROOVY (2)
- GRAILS学习 (7)
- SPRING (4)
- AJAX (2)
- JQUERY (6)
- XML (1)
- DWR (3)
- 线程 (0)
- SVN (0)
- json (1)
- anotation (0)
- 反射 (2)
- rapidframework (0)
- OA工作流 (2)
- 事务 (0)
- mysql (0)
- oracle (26)
- EXTJ (0)
- 求职 (2)
- 随笔 (22)
- 注释 (1)
- java综合 (30)
- 设计模式 (1)
- JSP SERVLET (2)
- 插件 (7)
- 应用 (3)
- HTML (5)
- flex (13)
- android (8)
- javascript (14)
- Exception (0)
- Linux (2)
- 计算机常识 (3)
- EXCEL (2)
- 正则表达式 (1)
- 开源工具 (2)
- 测试 (1)
- 生活 (7)
- 房子 (0)
- 购房大学 (4)
- UML (1)
- 服务器 (1)
- 发展 (1)
- 英语 (1)
- 项目管理 (1)
- 摘 (1)
- 网站 (1)
最新评论
-
a347911:
架构师教程:https://note.youdao.com/s ...
架构师之路--- 一个四年 JAVA 程序员的工作经历 转 -
hzxlb910:
对我帮助很大。
架构师之路--- 一个四年 JAVA 程序员的工作经历 转 -
xly_971223:
引用因此,while (!isInterrupted())也可 ...
Java 终止线程方法 -
zdglt88:
其实这个datagrid挺简单的,没有难度
Jquery easy ui 之datagrid简介 -
完善自我:
抓住重点,支持一下!
Jquery easy ui 之datagrid简介
ORACLE中的大对象:
LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
LONG RAW: 可变长二进制数据,最长2G
CLOB: 字符大对象Clob 用来存储单字节的字符数据
NCLOB: 用来存储多字节的字符数据
BLOB: 用于存储二进制数据
BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复.
CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有LONG只能有一列的限制。
要保存图片、文本文件、Word文件各自最好用哪种数据类型?
--BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用BLOB。
对CLOB与BLOB对象的操作
1. 查询(GET)
查询CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
Reader inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是读出并需要返回的数据,类型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
查询BLOB
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
if (rs.next())
{
java.sql.Blob blob = rs.getBlob("BLOBATTR");
InputStream inStream = blob.getBinaryStream();
//data是读出并需要返回的数据,类型是byte[]
data = new byte[input.available()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
2. 插入(INSERT)
插入CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
插入BLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组,定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
Hibernate保存BLOB对象
public void addMessage(Messages message,String content_str) {
Session session = this.getSession();
message.setContent(Hibernate.createBlob(new byte[1]));
session.save(message);
session.flush();
session.refresh(message, LockMode.UPGRADE);
SerializableBlob sb = (SerializableBlob)message.getContent();
BLOB blob = (BLOB)sb.getWrappedBlob();
try {
OutputStream out = blob.getBinaryOutputStream();
out.write(content_str.getBytes());
out.close();
session.save(message);
} catch (Exception e) {
e.printStackTrace();
}
}
hibernate.xml设置
<property name="photo" type="java.sql.Blob">
<column name="PHOTO" />
</property>
LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
LONG RAW: 可变长二进制数据,最长2G
CLOB: 字符大对象Clob 用来存储单字节的字符数据
NCLOB: 用来存储多字节的字符数据
BLOB: 用于存储二进制数据
BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复.
CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有LONG只能有一列的限制。
要保存图片、文本文件、Word文件各自最好用哪种数据类型?
--BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用BLOB。
对CLOB与BLOB对象的操作
1. 查询(GET)
查询CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
Reader inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是读出并需要返回的数据,类型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
查询BLOB
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
if (rs.next())
{
java.sql.Blob blob = rs.getBlob("BLOBATTR");
InputStream inStream = blob.getBinaryStream();
//data是读出并需要返回的数据,类型是byte[]
data = new byte[input.available()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
2. 插入(INSERT)
插入CLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
插入BLOB
//获得数据库连接
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更新,注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组,定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
Hibernate保存BLOB对象
public void addMessage(Messages message,String content_str) {
Session session = this.getSession();
message.setContent(Hibernate.createBlob(new byte[1]));
session.save(message);
session.flush();
session.refresh(message, LockMode.UPGRADE);
SerializableBlob sb = (SerializableBlob)message.getContent();
BLOB blob = (BLOB)sb.getWrappedBlob();
try {
OutputStream out = blob.getBinaryOutputStream();
out.write(content_str.getBytes());
out.close();
session.save(message);
} catch (Exception e) {
e.printStackTrace();
}
}
hibernate.xml设置
<property name="photo" type="java.sql.Blob">
<column name="PHOTO" />
</property>
发表评论
-
hibernate抓取策略
2012-04-20 09:58 1268Hibernate3 定义了如下几种抓取策略: 连接抓取( ... -
Spring中关于SqlRowSet的Invalid scale size. Cannot be less than zero异常处理
2012-03-28 13:10 3750在使用Spring中使用JdbcTemplate.queryF ... -
hibernate open session in view 抛出异常解决方法
2012-03-23 20:52 1159http://www.blogjava.net/dreamst ... -
jdbcTemplate使用总结1
2011-09-20 15:16 1341SqlRowSet rs = jdbcTemplate.que ... -
java.lang.String 与string
2011-06-24 15:58 1002个人认为string应该是java.lang.String与数 ... -
hibernate一对多sort和order by
2011-04-15 09:23 15471. 從資料庫的觀點 ... -
Hibernate对集合排序
2011-04-15 09:19 1689Hibernate对集合中的元素支持两种排序方式: Ø 在数 ... -
Hibernate之deleted object would be re-saved by cascade 异常的解决
2011-02-24 11:31 909以下是我在网上找到的, 我用了第二种方法,奇怪的是: 我在ac ... -
Hibernate学习笔记
2011-02-12 16:25 1211HQL 注意事项: 1.请把以前sql中的表名换成类名,把字 ... -
hql 多表查询
2011-01-20 18:19 1114String sql = "select test1 ... -
拼接字符串的学习
2010-12-22 21:58 919package com.ccid.str; import j ... -
[原创]多条件模糊查询的通用代码
2010-12-22 18:31 1476str_query1 = "se ... -
Hibernate中使用Hql查询出一定时间段的记录【 Date 比较】
2010-12-22 18:30 19980// 初步过滤出符合条件的区域ID String sql = ... -
Hibernate 中 UUID.HEX的实现机制??
2010-11-26 10:13 3558Hibernate主键生成方式 Key ... -
为什么我们要研究Hibernate ?-----转载自J道
2010-10-08 15:56 1038最近论坛上关于Hibernate ... -
HQL中修改对象属性的句子
2010-05-20 15:54 2062def newInstance = Organization. ...
相关推荐
简单写的一个小工具,把图片存入oracle中,按clob和blob两种方式存储,并读取图片
很多朋友在操作oracle数据库的clob,blob字段时不知道怎么插入和使用,这里提供读写范例。
Mybatis 处理 CLOB、BLOB 类型数据
从oracle中的BLOB类型字段中取出照片,转存到mysql数据库中。思路是现将oracle中的照片存储在本地文件夹,在将本地图片上传到mysql中。
在通过拼组sql语句来实现数据插入的应用中,我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段内容时,我们如果通过简单的拼组sql语句来实现插入,显然就会出现问题,而在...
针对oracle中blob字段的操作,能批量快速的插入大字段,效率非常高
今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误。 网上说用流来处理,没有这么做。这像是一个Bug,只要把插入的数据,默认扩充到2000以上就ok了。 下面是这段代码: if(...
7、LOB数据类型用于存储大型的,没有被结构化的数据,例如二进制文件,图片文件,LOB主要分为BLOB和CLOB,BLOB数据类型用于存储二进制对象:图像,音频,视频...CLOB数据类型用于存储字符格式的大型对象 ...
本程序不同步blob和clob字段,玩oracle的人都懂,用sql同步此类数据,速度上不去,此类数据应该要用导出导入的方式提升速度。 具体请参阅程序,可根据自已需要进行修改。 参数说明: CREATE OR REPLACE PROCEDURE ...
如果利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象...
比如ms sql server中的image,oracle中的blob,clob,long以及db2中dbclob,graphic,long vargraphic等类型. 这个工具是本人利用闲暇时间所写,欢迎大家提意见.也可以向我索取源码. maito: henry.dhl@gmail.com ...
SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。 SQL语言主要包含5个部分 数据定义...
》》支持LOB字段(CLOB, NCLOB和BLOB)恢复,并支持同一个表中,不同LOB列使用不同CHUNK SIZE的情况 》》支持多种Big Endian/Little Endian操作平台(AIX/HPUX/SOLARIS/Linux/Windows)数据库数据恢复 》》支持...
§10.1.3 在查询中只返回满足条件的部分记录 214 §10.1.4 快速大量删除数据Truncate 215 §10.1.5 Rowid的使用 215 §10.1.6 在查询中不让记录被更新 217 §10.1.7 EXCEPTIONS(违反完整性)问题 217 §10.1.8 Not ...
1 动态SQL简介 14.2 处理非查询语句 14.3 处理多行查询语句 14.4 在动态SQL中使用BULK子句 14.5 习题第15章 使用对象类型 15.1 对象类型简介 15.2 建立和使用简单对象类型 15.3 建立和...
3.数据管理: 编辑表数据,包括BLOB和CLOB数据;过滤,排序,查找查询结果;插入,复制,更新和删除表数据;查找,替换表数据, 4. SQL工具: 编辑,格式化和执行SQL语句 5. SQL生成工具:帮助生成查询,插入,更新,删除SQL语句 6. ...
3.数据管理: 编辑表数据,包括BLOB和CLOB数据;过滤,排序,查找查询结果;插入,复制,更新和删除表数据;查找,替换表数据, 4. SQL工具: 编辑,格式化和执行SQL语句 5. SQL生成工具:帮助生成查询,插入,更新,删除SQL语句 6...