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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++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

在當前雲端運算和網路應用的時代,越來越多的業務需要輕量級的應用程式來完成,因此使用GoogleCloudFunctions和PHP來實現輕量級應用程式開發和部署是非常適合的。 GoogleCloudFunctions是一種基於事件觸發和無伺服器運算的方法,使用者只需要編寫程式碼來處理這些事件,而不需要管理服務或維護伺服器。此外,PHP是一種流行的程式語言,被廣泛使用
