`

Java+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 raw);

  然后

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

分享到:
评论

相关推荐

    Java+Oracle应用开发中的几个经典问题.docx

    Java+Oracle 应用开发中的几个经典问题 Java+Oracle 应用开发中,开发者经常会遇到一些经典的问题,这些问题如果不加以注意,可能会导致应用程序的运行不稳定或出现错误。本文将讨论在 Java+Oracle 应用开发中遇到...

    Java+Oracle应用开发中的几个经典问题.pdf

    在Java与Oracle应用开发中,会遇到一些常见问题,这些问题涉及到驱动程序加载、大对象存储以及可滚动结果集的处理。以下是对这些问题的详细解释: 1. **驱动程序加载**: - **Class.forName(String)**:这个方法...

    Java+Oracle学生信息管理系统

    在本系统中,Java主要承担以下几个角色: 1. **MVC架构**:系统采用Model-View-Controller(MVC)设计模式,将业务逻辑、数据处理和用户界面分离,提高代码复用性和模块化。 2. **Servlet与JSP**:Servlet用于处理...

    JAVA+ORACLE公交信息管理系统

    在公交查询系统的设计中,通常会包含以下几个关键模块: 1. 用户接口模块:用户可以通过简单的图形界面输入查询条件,如线路号、起点站、终点站等,JAVA程序将这些信息封装成SQL查询语句,发送给ORACLE数据库。 2....

    java+oracle数据库开发指南

    为了更好地集成Java和Oracle,开发者需要了解以下几个关键概念: 1. 数据源(DataSource):在Java中,数据源是一个接口,用于管理数据库连接。使用数据源可以更有效地管理连接池,提高性能和资源利用率。 2. JPA...

    基于Java+Oracle的企业人事管理系统

    Spring框架常用于企业级应用开发,提供依赖注入和AOP(面向切面编程),使得系统模块化,降低了耦合度。同时,Spring MVC处理HTTP请求,实现了业务逻辑与视图的分离。Hibernate作为ORM工具,使得Java程序可以直接...

    JSP+Oracle网络应用系统开发与实例

    8. **安全性**:包括认证、授权、加密、防止SQL注入和跨站脚本攻击等,是开发JSP+Oracle应用时必须考虑的重要环节。 9. **性能优化**:如使用连接池管理数据库连接,预编译SQL语句,以及适当的缓存策略,都是提高...

    学生成绩管理系统+java+oracle

    通过这个系统,我们可以深入理解Java后端开发以及Oracle数据库管理的核心概念,提升数据库设计与应用能力。 首先,让我们从Java开始。Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性而...

    java+oracle校园QQ聊天系统

    Java在该系统中的应用主要体现在以下几个方面: 1. **用户界面**:Java的Swing或JavaFX库被用于创建用户友好的图形界面,使得用户能够直观地进行聊天、发送消息、添加好友等操作。 2. **网络通信**:Java的Socket...

    研究生管理系统+java+oracle

    研究生管理系统是一款基于JAVA编程语言和Oracle数据库技术开发的软件应用,旨在有效管理和组织研究生的教育、科研、成绩、个人信息等各项事务。这个系统的核心特点在于它整合了JAVA的后端开发能力和Oracle数据库的...

    完美整合(通用分页)SSH+Oracle (需要自己加入jar包,只是源码)

    SSH(Struts2、Spring、Hibernate)是Java开发中常用的三大开源框架,它们各自负责Web应用的不同层面:Struts2处理MVC模式中的Controller部分,Spring作为整体的IoC(Inversion of Control,控制反转)/DI...

    SpringBoot+mybatis+Oracle整合代码

    在"SpringBoot+mybatis+Oracle整合代码"中,我们可以学习到以下几个关键知识点: 1. **SpringBoot的自动配置**:SpringBoot的核心特性之一就是自动配置,它能根据项目中的依赖自动配置相应的Bean。在整合MyBatis时...

    springboot +mybatis+oracle 配置多个数据源,配置两个数据库信息

    在Spring Boot项目中,我们经常会遇到需要...在实际开发中,还需要考虑事务管理、读写分离、路由策略等问题,但这里主要介绍了基础配置。通过这种方式,我们可以灵活地管理和操作多个数据库,满足复杂的应用场景需求。

    java拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)

    【标题】"java拼车网雏形(Ext2.0+SSH+oracle10g+lucene2.4)" 涉及的核心技术是Java Web开发中的几个关键组件,包括ExtJS 2.0前端框架,Spring、Struts2和Hibernate(SSH)后端框架,Oracle 10g数据库以及Lucene ...

    jsp+servlet+oracle 登录

    【jsp+servlet+oracle 登录】是一个典型的Web应用程序开发场景,涉及到的主要技术是JavaServer Pages (JSP)、Servlet和Oracle数据库。以下是这些技术及其在登录应用中的具体应用。 **JavaServer Pages (JSP)** 是一...

    Java编程实例JDBC+MySQL+Oracle+SQLServer

    Java编程实例JDBC+MySQL+Oracle+SQLServer是关于Java企业级应用开发的重要教程,主要聚焦于Java如何通过Java Database Connectivity (JDBC) API与多种数据库进行交互,包括MySQL、Oracle和SQLServer。JDBC是Java平台...

    springMVC+MyBatis+Oracle+Web实现增删改查完整案例+数据库数据)

    一个典型的SpringMVC + MyBatis项目通常包含以下几个部分: - `src/main/java`:包含业务逻辑(Service层)、数据访问对象(DAO层)、控制器(Controller层)以及其他服务类。 - `src/main/resources`:存放配置...

    基于注解的springMVC+hibernate+oracle包含数据库查询

    综上所述,基于注解的SpringMVC+Hibernate+Oracle的整合主要涉及以下几个关键知识点: 1. SpringMVC的注解驱动:`@Controller`、`@RequestMapping`、`@Autowired`等。 2. Hibernate的注解映射:`@Entity`、`@Table`...

    JSP+ORACLE数据库组建动态网站经典案例

    《JSP+ORACLE数据库组建动态网站经典案例》是一本深度探讨如何利用Java Server Pages(JSP)技术和ORACLE数据库来构建动态网站的专著。这本书不仅提供了理论基础,更侧重于实践应用,通过一系列的经典案例,帮助读者...

    jsp+oracle用户管理系统源码

    在“jsp+oracle用户管理系统源码”中,我们可以深入探讨以下几个关键知识点: 1. **JSP基础**:JSP页面由HTML、CSS和Java脚本元素组成。其中,`<jsp:include>`、`<jsp:forward>`、`<jsp:useBean>`等指令用于控制...

Global site tag (gtag.js) - Google Analytics