选择显示字体大小

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

 


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons