赛迪网 > IT技术 数据库 > 精彩更新
  IT资讯搜索
 
IT产品搜索

在Oracle下开发Java程序的经典问题解答 (2)

发布时间:2007.08.09 05:02     来源:赛迪网    作者:limeinan

如果你一定要用BLOB存储,你就必须用Oracle自己的方法:

create table tb_file(name varchar(20),detail BLOB); 
con.setAutoCommit(false); 
stmt.executeUpdate("insert into tb_file values
(´aaa.gif´,empty_blob())");

下面必须SELECT得到BLOB的对象再向里写:

rs = stmt.executeQuery
("select detail from tb_file
 where name=´aaa.gif´ 
for upfdate" ); 
if(rs.next()) 
{ 
Blob blob = rs.getBlob(1); 
BinaryOutputStream out = 
((oracle.sql.BLOB)blob).getBinaryOutputStream(); 
byte[] b = new byte
[((oracle.sql.BLOB)blob).getBufferSize]; 
InputStream fin = new FileInputStream(file); 
int len = 0; 
while( (len = fin.read(b)) != -1) 
out.write(b,0,len); 
fin.close(); 
out.close(); 
con.commit(); 
}

同样读取数据你并不能象LONG ROW那样

InputStream in = rs.getBinaryInputStream("detail");

而要:

Blob blob = rs.getBlob("detail"); 
in = blob.getBinaryStream();

问题三:可滚动结果集

Oracle明确说明不支持结果集滚动,那么我们用JDBC2得到一个可滚动的结果集就是同JDBC自己支持的,就是说结果集要在内在中高度缓存,很多很多的开发者都错误地认为是数据库支持的。只是他们没有真正查询大量行,如果真的查询大量行的话肯定是死定了!对于超大量行的数据,情愿返回到它的笨方法也不要使用可滚动结果集。 (责任编辑:卢兆林)

<<上一页 1 2


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 针对Java攻击不断升温安全问题日益严重 (08-02) · 有哪些初始化参数最影响Oracle系统性能 (08-01)
· 教你快速了解PB所支持的Oracle 的版本 (07-31) · 细化解析Oracle 10g STATSPACK的新功能 (07-31)
· 解析Oracle 9i数据库异常关闭后的启动 (07-31) · 怎样解决Oracle 9i与Tomcat的端口冲突 (07-31)
· 轻松掌握:PB 连接 Oracle 7,Oracle 8 (07-31) · 删除Oracle 10g垃圾表的新方法 (07-30)
· 解析:ORACLE性能调整--统计信息的迁移 (07-30) · Oracle中对像名大小写敏感性的深入解析 (07-30)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管