亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区
注冊
|
提交需求
|
訂閱
|
English
首 頁
解決方案
產(chǎn) 品
服 務(wù)
支 持
EDN系統(tǒng)
成功案例
關(guān)于我們
聯(lián)系我們
樹結(jié)構(gòu)圖
EDN系統(tǒng)
圖形圖像
網(wǎng)絡(luò)安全
項目專題
WEB開發(fā)
辦公系列
操作系統(tǒng)
數(shù)據(jù)庫
程序設(shè)計
TOP 10
在Foxmail中如何使…
Ftp 子命令
BigDecimal
MSN在線客服功能模塊使…
會員卡使用方法說明
DataInputStr…
留言板功能說明
CScript
BufferedInpu…
設(shè)置打印機
您現(xiàn)在的位置:
>
技術(shù)沙龍
>
程序設(shè)計
>
Java
>
未分類
>
Java中的“數(shù)據(jù)集”
相關(guān)軟件
>
Java中的“數(shù)據(jù)集”
創(chuàng)建者:
webmaster
更新時間:
2010-06-26
20:07
在.net中引入了一個Java中沒有的、并且對于數(shù)據(jù)庫查詢來說非常實用的一個概念——數(shù)據(jù)集。
簡單的說,數(shù)據(jù)集就是利用一次連接數(shù)據(jù)庫的查詢時間將查詢結(jié)果保留下來,再根據(jù)所需對數(shù)據(jù)進行操作。由于此時的數(shù)據(jù)操作(這里僅限于查詢及其批量修改)是在駕馭在數(shù)據(jù)庫外面的基礎(chǔ)上,也就是說此時已經(jīng)完全
脫離
了數(shù)據(jù)庫。所以對于程序來說無疑在速度上大大了節(jié)省了時間,從而提高了程序執(zhí)行的效率。
那么在Java中是否可以使用同樣的方法呢?我們的回答是肯定的。只不過在VS.net中這些全都是有IDE自動生成的,而我們這里則需要手工寫。其實實現(xiàn)這個功能很簡單,但是如果要做到真正的提高效率那就擁有一定的難度系數(shù)了。
下面,簡單的說一下在Java中是如何實現(xiàn)“數(shù)據(jù)集”的:
.net中生成的的數(shù)據(jù)集是以XML來表示的,在Java里同樣可以,調(diào)用相應(yīng)的XML的API就可以了。為了簡便操作,我們這里僅僅用數(shù)據(jù)集合。
首先看一下這些代碼:
import java.sql.*;
public class SqlTest
{
Connection con;
PreparedStatement ps;
public SqlTest()
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Northwind","sa","");
}
public void search()
{
ps=con.prepareStatement("select * from Products");
ResultSet result=ps.executeQuery();
while(result.next())
{
String t1=result.getString(1);
String t2=result.getString(2);
……………………
……………………
String tN=result.getString(N);
}
}
}
此時,我們用的是最普通也是最本的方法將數(shù)據(jù)一點一點地從數(shù)據(jù)庫中取出來,如果這個程序沒有“跨越”傳輸數(shù)據(jù)的話,這個勉強能說得過去。但是在實際的開發(fā)中像這種本地調(diào)用的畢竟是少數(shù),所以就出現(xiàn)了所謂的“跨越”調(diào)用(即在不同的計算機之間進行的數(shù)據(jù)傳輸)。
首先這里要注意一點,如果在這里加入finally然后在里面執(zhí)行關(guān)閉書數(shù)據(jù)庫操作的時候,回報錯!因為這里會因為數(shù)據(jù)沒有查詢完畢而出現(xiàn)異常。
由于上述情況,就限制住了一點:“在這種情況下,始終保持著數(shù)據(jù)庫的連接狀態(tài)?!边@對于數(shù)據(jù)庫資源和網(wǎng)絡(luò)資源非常寶貴的環(huán)境來說顯然是不現(xiàn)實的。所以便出現(xiàn)了我們下面的“數(shù)據(jù)集”:
import java.sql.*;
import java.util.*;
public class SqlTest
{
Connection con;
PreparedStatement ps;
public SqlTest()
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Northwind","sa","");
}
public Vector search()
{
ps=con.prepareStatement("select * from Products");
ps.setString(1,key);
ResultSet result=ps.executeQuery();
Vector resV=new Vector();
while(result.next())
{
CustObj obj=new CustObj(result.getInt(1),
result.getInt(2),
...............
...............
result.getInt(N));
resV.add(obj);
}
return resV;
}
}//這里的CustObj僅僅是一個接受類
和上面的不同,此時完全可以用finally語句附帶關(guān)閉數(shù)據(jù)庫的操作。因為此時數(shù)據(jù)已經(jīng)完全保存到了Vector里面。
無論是在面向?qū)ο蟮脑O(shè)計中,還是在數(shù)據(jù)庫跨越傳輸中。第二種方法都是最佳的首選。如果在配合Java與XML的API,實現(xiàn).net那樣的數(shù)據(jù)集本地化是輕而易舉的事。
還是那句話,如果真得能做到“真正的提高效率”,很難。畢竟,VS.net中的本地化數(shù)據(jù)庫并不是像我說得這樣簡單。
(僅供參考)
相關(guān)文章
前一則:
避免重啟你的應(yīng)用程序 二
后一則:
So what are inner classes good for anyway?(翻譯 by Gee)
本頁查看次數(shù):
公司公告
|
客戶調(diào)查
|
法律聲明
|
誠聘英才
|
給我們投稿
|
繁
閃
頭像
京ICP備05031245號
Copyright @ REDCOME.com ALL Rights Reserved
北京怡康軟件科技有限公司 地址:北京市昌平區(qū)東小口立湯路188號北方明珠大廈1號樓2708 郵編:102218 電話:84909966 傳真:84909900 QQ:335601661