Oracle保存大对象BLOB
最近在使用Oracle做文件上传,要求将文件数据保存到数据库中。Oracle提供了Blob用来存储二进制大对象数据,可是它和Java.sql里面的Blob不兼容,经常导致Blob字段无法锁定或者操作失败。由于以前没有做过这样的例子,所以花了不少时间才解决。
我使用的是struts2.1.8+spring2.5+hibernate3.2,下面是相关代码:
spring配置文件中配置hibernate的参数:
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=true
hibernate.jdbc.batch_size=0
</value>
</property>
因为Oracle中对流的操作不支持批量,因此hibernate.jdbc.batch_size=0必须加上
sturts.xml中配置上传文件最大长度:
<constant name="struts.multipart.maxSize" value="52428800"/>
如果上传文件超出该配置范围,请求将不会发送到Acion
fileUpload.jsp页面设置表单属性:
<s:form action="business_fileUpload" namespace="/business"
enctype="multipart/form-data" method="post">
enctype="multipart/form-data"该属性是Struts2对文件上传的支持,设置该属性之后就可以在Action端直接用File对象来接受上传的文件数据,而method="post"就不必多讲了,也是必须的。
FileAction.java中:
public String fileUpload() throws Exception {
this.fileServiceBean.fileUpload(updateFile);
return "fileList";
}
Action中没有任何数据处理,直接将表单数据传进服务层的文件上传方法中
FileServiceBean.java中:
public boolean fileUpload(UpdateFile updateFile) {
try {
Session session = this.objectDaoHibernate.openSession();
Transaction ts = session.beginTransaction();
// 保存一个空的Blob对象
updateFile.setFileData(BLOB.empty_lob());
updateFile.setUpTime(new Date());
session.save(updateFile);
// 强制保存,否则锁定时报:无法找到该对象错
session.flush();
// BLOB更新之前必须锁定对象
session.refresh(updateFile, LockMode.UPGRADE);
// 解决java.sql.Blob无法转型为oracle.sql.BLOB问题
Ser
相关文档:
转载一个BDB的相关介绍,基本可以当速成手册用,更多的文档可以去Oracle官方网站下载。
SQL 开发人员 Oracle Berkeley DB 指南
作者:Margo Seltzer
Oracle Berkeley DB 中常用 SQL 函数使用指南。
2007 年 9 月发表
常常有人问 Oracle Berkeley DB “我如何在 Berkeley DB 中进行 <SQL 查询>?"因此,我们 ......
Oracle中Kill session的研究
作者:eygle |English Version 【转载时请以超链接形式标明文章出处和作者信息及本声明】
链接:http://www.eygle.com/archives/2004/06/kill_session.html
我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:
alter system kill session 'sid,serial# ......
比较专业,专门计算机技术电子书下载的:
www.itpub.net
www.itepub.net
www.netyi.net/in.asp?id=daotong
www.chmpdf.com
相对不太专业的,内容也非常丰富
www.infoxa.com
www.xpbook.com
这些网站几乎可以找到你想要的全部书籍。 ......
今天上午测试一个访问ORACLE的c++类,文档上说连接字符串的格式为"用户名/口令@连接名",我不是太明白连接名到底为何物,先用IP地址试了试
,总是报错,说无法解析的连接标识符,后来在网上查了半天,看到有个人说连接名就是$(ORACLE_HOME)/network/admin/tnsnames.ora里定义的数据库连接的名称,试了一下,果然如此。 ......
1个实例
create table tjob2(tt date);
创建一个存储过程
create or replace procedure t26 is
begin
insert into tjob2 values(sysdate);
commit;
end t26;
创建job,每分钟执行一次
SQL> declare
2 tjob number;
3 begin
4 sys.dbms_jo ......