Java+Oracle应用开发的几个常见问题解答
问题一:如保加载JDBC驱动程序: 正常我们加载驱动程序有三个途径: 1)Class.forName(String)这想当于classLoader一个String指定的类,在装载时把该驱动程序的静态内容都初始化,其实这时驱动程序类调用了DriverManager.registerDriver(driver)方法 2)使用系
问题一:如保加载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 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自己支持的,就是说结果集要在内存中高度缓存,很多很多的开发者都错误地认为是数据库支持的。只是他们没有真正查询大量行,,假如真的查询大量行的话肯定是死定了!!!!!!对于超大量行的数据,情愿返回到它的笨方法也不要使用可滚动结果集。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

10月9日,云深处科技发布“绝影X30”四足机器人,作为面向行业应用的新一代行业级产品,针对电站、工厂、管廊巡检、以及应急救援、消防侦查、未来科研等多领域核心诉求,带来全球领先的行业能力:独创的融合感知能力,在亚洲率先实现多变环境下快速稳健越障、上下镂空工业楼梯、白天黑夜全天候自主巡检,打破更多场景限制,且能针对突发任务快速反应;在亚洲首次将四足机器人的使用温度范围扩展至-20℃至55℃,大幅拓宽应用地区与季节;自带实时监控系统及应急处理系统,保障智能作业更加安全高效。工信部等十七部门印发《“机

随着时代的发展,农业领域也开始借助现代科技手段升级转型,智慧农业也因此应运而生。Java作为一种性能优异、可移植性强的计算机编程语言,具备着较高的普及度和应用价值,成为智慧农业应用开发的重要解决方案之一。本文旨在介绍Java语言中智慧农业应用的开发流程、应用场景和优势点等方面的内容。一、Java语言中智慧农业应用的开发流程智慧农业应用的开发流程分为需求分析、

Java语言作为目前最为流行的编程语言之一,其在各种应用开发领域中都有着广泛的应用。其中,语音识别应用是近年来备受瞩目的一个领域,尤其是在智能家居、智能客服、语音助手等领域中,语音识别应用已经变得不可或缺。本文将为读者介绍如何使用Java语言进行语音识别应用的开发。一、Java语音识别技术分类Java语音识别技术可以分为两种:一种是使用Java语言封装的第三

智慧城市在不断发展,成为了城市建设的一个新的方向和目标。智慧城市通过人工智能、物联网技术等手段,实现城市的信息化、智能化和可持续化发展。而Java语言正是智慧城市应用开发的主要工具之一。一、Java语言在智慧城市应用开发中的作用Java语言作为一种主流编程语言,具有优秀的跨平台性和可移植性,能够适用于各种不同的操作系统和硬件平台。Java语言支持面向对象编程

Java语言中的视频处理应用开发介绍随着互联网和数字化技术的不断发展,视频已经成为人们生活中不可或缺的一部分。无论是短视频应用还是在线教育平台,视频都占据了重要的位置。其中,视频处理应用成为了热门关注的话题之一。本文将介绍Java语言中的视频处理应用开发。一、Java语言中的视频处理类库Java语言作为一门跨平台的程序语言,它的强大之处在于丰富的类库,其中也

Pandas是Python的一种数据分析工具,特别适合对数据进行清洗、处理和分析。在数据分析过程中,我们时常需要读取各种格式的数据文件,比如Txt文件。但在具体操作过程中,会遇到一些问题。本文将介绍pandas读取txt文件常见问题的解答,并提供相应的代码示例。问题1:如何读取txt文件?使用pandas的read_csv()函数可以读取txt文件。这是因为

最近几年,PHP编程中的模板引擎已经成为了PHP开发的重要组成部分,方便了程序员进行页面开发和管理。本文将介绍PHP编程中常见的模板引擎。SmartySmarty是一个比较常用的PHP模板引擎,它支持缓存模板、插件模块和自定义函数等一系列功能。Smarty的语法十分灵活,能够解决PHP变量与HTML标记的结合难题,使得PHP语言更适用于模板化的设计。而且,S

Java语言中的物品识别应用开发介绍物品识别是一种使计算机能够识别和分类物品的技术,这种技术已经广泛应用于许多领域,如医学、安全、制造业、军事和机器人。这篇文章将介绍在Java语言中开发物品识别应用的相关技术和步骤。Java是一种广泛使用的编程语言,因其跨平台、安全性和可移植性而备受欢迎。在Java中开发物品识别应用需要使用以下技术:1.计算机视觉技术计算机
