在Oracle下开发Java程序的经典问题解答
问题一:如保加载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())
相关文档:
自己在做这个程序的时候看过很多的资料,上网也查了不少的资料,可是多半说的是出神入化,云里雾里...不光看了不明白,而且是有明白一点的人,看了也变的有些模糊了。
这里我掩饰一套完整的java jdbc 连接Oracle9i的范例。
package com.lxh.dbcon;//打包
import ......
1. 异常机制
异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。
传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(� ......
本文来自:http://www.javaeye.com/topic/130025 1 简介<o:p></o:p> 对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。<o:p></o:p> 序列化一般用于以下场景:<o:p></o:p> 1. 永久性保存对象,保存对象的字节序列到本� ......
java jce对aes算法有很好的支持,但是默认安装的JDK或者JRE是不能支持aes192bit密钥和aes256bit密钥两种算法的,需要到sun官方下载Java(TM) Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,以下是jce unilimited strength jurisdiction policy files 6的官方 ......
学习Java类的属性-武汉北大青鸟
Public、private、protected显示了三种类中的属性和服务的类型,public是可以随意访问的、private是外界不能访问的(显示了数据的封装性)、protected说明数据是受保护的。下面就来详细讲述一下这三个究竟有什么区别。
首先要了解一下包的概念。有若干个类,它们相互之间有一定的关� ......