【oracle java开发】谈谈在ORACLE下开发JAVA程序的问题

Oracle学习 2021-08-28 网络整理 可可

【shitiku.jxxyjl.com--Oracle学习】

问题一:如保加载jdbc驱动程序:
正常我们加载驱动程序有三个途径:
1)class.forname(string)这想当于classloader一个string指定的类,在装载时把该驱动程序的静态内容都初始化,其实这时驱动程序类调用了drivermanager.registerdriver(driver);方法
2)使用系统属性:system.getproperty().load(new fileinputstream("属性文件"));
在属性文件中指定jdbc.driver=drivername 这样的好处是可以同时加载多个jdbc,换数据库时不用访问java源代码,只是修改属性文件
3)直接registerdriver(driver)这种方法最可靠,可以在任何环境下使用。

1)方法简单,但ms的jvm不能正确初始化。比如使用ie时在applet中就不能使用,应该用3)的方法。但3)方法在灵活性方面不如2),可以根据环境综合考虑。


问题二:大对象存储
一般来说,大对象存储是把文件存到数据库中,当然也可以内存中的超大字符串。对于象图片这样的文件当然是用二进制存储,这里有很多误区,网络上的教程99%都是行不通的,连sun自己的文档都一直错误,虽然错误很小。按说二进制文件应该存为blob类型,但jbdc2并不能直接对blob存入二进制文件,如果你这样做,会得到一个io而不是sql异常,为此花了我近两个小时才弄清楚。
如果要把一个二制文件存入oracle,用标准的jdbc你就要用long row类型:
create table tb_file(name varchar(20),detail long row);
然后
file file = new file("aaa.gif");
int filelength =(int) file.length();
inputstream fin = new fileinputstream(file);
preparedstatement pstmt = con.preparestatement("insert into tb_file values(´aaa.gif´,?)");
pstmt.setbinarystream (1, fin, filelength);
pstmt.executeupdate();

如果你一定要用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自己支持的,就是说结果集要在内在中高度缓存,很多很多的开发者都错误地认为是数据库支持的。只是他们没有真正查询大量行,如果真的查询大量行的话肯定是死定了!!!!!!对于超大量行的数据,情愿返回到它的笨方法也不要使用可滚动结果集

本文来源:https://shitiku.jxxyjl.com/oraclexuexi/7697.html

  • 【weblogic配置oracle数据源】WebLogic与ORACLE数据库的连接配置

    weblogic6 0通过oracle客户端访问oracle 所以在weblogic6 0所在的机器上要正确安装oracle客户端才行 weblogic6 0可采用type2或type4的jdbc driver 与oracle数据库相连。下面分别介绍它们的配置方法:type2 jdbc drive...

    发布于:2021-08-28

    详细阅读
  • oracle数据库入门教程|如何学习Oracle?

    经常有一些oracle的初学者问到这个问题,这里算是一个统一答复。 1、如果有一定的数据库基础,知道sql是怎么回事,即使写不出来简单的sql,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和sql语言,不需要很深,更不需要去记忆那些复杂的sql命令,...

    发布于:2021-08-28

    详细阅读
  • [sql语句学习]PL/SQL学习笔记(七)

    层次查询select [level],column,expr from table [where condition][start with]起点(自底向上 自顶向下)[connect by prior + 主键 外键=外键 主键] 看你往哪个方向查自顶向下 左边放主键,右边放外键select...

    发布于:2021-08-28

    详细阅读
  • [oracle10g重建监听]oracle10g重建emdbcontrol

    oracle 10g重建em db control 1 drop configuration files and repository run :emca -deconfig dbcontrol db -repos drop 2 logon sqlplus as user sys or syste...

    发布于:2021-08-28

    详细阅读
  • [oracle]Oracle PL/SQL语言基础

    pl sql是oracle对标准数据库语言的扩展,oracle公司已经将pl sql整合到oracle 服务器和其他工具中了,近几年中更多的开发人员和dba开始使用pl sql,本文将讲述pl sql基础语法,结构和组件、以及如何设计并执行一个pl sql程序。   pl sql...

    发布于:2021-08-28

    详细阅读
  • 【oracle重建密码文件】重建密码文件--解决ORA-01991错误

    统计服务器测试没问题,刚好上次配置系统的时候有点问题,故重装一次,配置好安全策略(最近在研究如何新配置一台服务器的时候,第一时间配置好相关的安全设置,有空再写下来)。 为了省事,直接冷备份oracle的数据文件,安装好oracle后,直接恢复到原来对应的目录。启动,出现:...

    发布于:2021-08-27

    详细阅读
  • ocp考试通过率|参加OCP考试的小技巧

    下面这些小技巧能帮助你准备和通过每个考试。   每个ocp考试包含55~80个问题,考试时间90分钟。首先回答你会的问题,这样不至于时间不够用。   许多问题的答案选项第一眼看上去都是一样的,要仔细阅读问题,不要直接跳到答案,一定要弄确切每个问题到底问什么。   大部分测试题都是基于场景的,有些场景...

    发布于:2021-08-27

    详细阅读
  • [jdbc连接oracle数据库的连接字符串]通过JDBC连接oracle数据库的几个技巧

    java数据库连接(jdbc)api是一系列能够让java编程人员访问数据库的接口,各个开发商的接口并不完全相同。以下是一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。   1、在客户端软件开发中使用thin驱动程序 在开发java软件方面,oracle的数据库...

    发布于:2021-08-27

    详细阅读
  • vi编辑器的使用技巧_VI的常见使用技巧

    一、简介 vi命令可以说是unix linux世界里最常用的编辑文件的命令了,很多人不喜欢vi因为它 的众多的命令集,但是我们只需要掌握基本的命令然后灵活地加以运用,相信你会象我一样喜欢它的。 本文旨在更有条理有归纳性地介绍vi的一些最常用命令和一些高级的应用。 二、基本命令介绍 1) 光标命令...

    发布于:2021-08-27

    详细阅读
  • 会话跟踪技术|用改变跟踪技术加速Oracle递增备份

    oracle 8i引进了恢复管理(rman),首次实现了真正的递增备份。在rman之前,数据库输出也能够递增进行,但一旦某个表的任何一块发生改变,整个表都需要重写。rman递增备份则仅需在给定的数据文件中重写被修改的部分,由此可大大节约了空间。  然而在版本10g之前,递增备份需要对...

    发布于:2021-08-27

    详细阅读

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计