精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久
注冊(cè)
|
提交需求
|
訂閱
|
English
首 頁(yè)
解決方案
產(chǎn) 品
服 務(wù)
支 持
EDN系統(tǒng)
成功案例
關(guān)于我們
聯(lián)系我們
樹(shù)結(jié)構(gòu)圖
EDN系統(tǒng)
圖形圖像
網(wǎng)絡(luò)安全
項(xiàng)目專題
WEB開(kāi)發(fā)
辦公系列
操作系統(tǒng)
數(shù)據(jù)庫(kù)
程序設(shè)計(jì)
TOP 10
在Foxmail中如何使…
Ftp 子命令
BigDecimal
MSN在線客服功能模塊使…
會(huì)員卡使用方法說(shuō)明
DataInputStr…
留言板功能說(shuō)明
CScript
BufferedInpu…
設(shè)置打印機(jī)
您現(xiàn)在的位置:
>
技術(shù)沙龍
>
程序設(shè)計(jì)
>
Java
>
未分類
>
Java中的“數(shù)據(jù)集”
相關(guān)軟件
>
Java中的“數(shù)據(jù)集”
創(chuàng)建者:
webmaster
更新時(shí)間:
2010-06-26
20:07
在.net中引入了一個(gè)Java中沒(méi)有的、并且對(duì)于數(shù)據(jù)庫(kù)查詢來(lái)說(shuō)非常實(shí)用的一個(gè)概念——數(shù)據(jù)集。
簡(jiǎn)單的說(shuō),數(shù)據(jù)集就是利用一次連接數(shù)據(jù)庫(kù)的查詢時(shí)間將查詢結(jié)果保留下來(lái),再根據(jù)所需對(duì)數(shù)據(jù)進(jìn)行操作。由于此時(shí)的數(shù)據(jù)操作(這里僅限于查詢及其批量修改)是在駕馭在數(shù)據(jù)庫(kù)外面的基礎(chǔ)上,也就是說(shuō)此時(shí)已經(jīng)完全
脫離
了數(shù)據(jù)庫(kù)。所以對(duì)于程序來(lái)說(shuō)無(wú)疑在速度上大大了節(jié)省了時(shí)間,從而提高了程序執(zhí)行的效率。
那么在Java中是否可以使用同樣的方法呢?我們的回答是肯定的。只不過(guò)在VS.net中這些全都是有IDE自動(dòng)生成的,而我們這里則需要手工寫(xiě)。其實(shí)實(shí)現(xiàn)這個(gè)功能很簡(jiǎn)單,但是如果要做到真正的提高效率那就擁有一定的難度系數(shù)了。
下面,簡(jiǎn)單的說(shuō)一下在Java中是如何實(shí)現(xiàn)“數(shù)據(jù)集”的:
.net中生成的的數(shù)據(jù)集是以XML來(lái)表示的,在Java里同樣可以,調(diào)用相應(yīng)的XML的API就可以了。為了簡(jiǎn)便操作,我們這里僅僅用數(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í),我們用的是最普通也是最本的方法將數(shù)據(jù)一點(diǎn)一點(diǎn)地從數(shù)據(jù)庫(kù)中取出來(lái),如果這個(gè)程序沒(méi)有“跨越”傳輸數(shù)據(jù)的話,這個(gè)勉強(qiáng)能說(shuō)得過(guò)去。但是在實(shí)際的開(kāi)發(fā)中像這種本地調(diào)用的畢竟是少數(shù),所以就出現(xiàn)了所謂的“跨越”調(diào)用(即在不同的計(jì)算機(jī)之間進(jìn)行的數(shù)據(jù)傳輸)。
首先這里要注意一點(diǎn),如果在這里加入finally然后在里面執(zhí)行關(guān)閉書(shū)數(shù)據(jù)庫(kù)操作的時(shí)候,回報(bào)錯(cuò)!因?yàn)檫@里會(huì)因?yàn)閿?shù)據(jù)沒(méi)有查詢完畢而出現(xiàn)異常。
由于上述情況,就限制住了一點(diǎn):“在這種情況下,始終保持著數(shù)據(jù)庫(kù)的連接狀態(tài)。”這對(duì)于數(shù)據(jù)庫(kù)資源和網(wǎng)絡(luò)資源非常寶貴的環(huán)境來(lái)說(shuō)顯然是不現(xiàn)實(shí)的。所以便出現(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僅僅是一個(gè)接受類
和上面的不同,此時(shí)完全可以用finally語(yǔ)句附帶關(guān)閉數(shù)據(jù)庫(kù)的操作。因?yàn)榇藭r(shí)數(shù)據(jù)已經(jīng)完全保存到了Vector里面。
無(wú)論是在面向?qū)ο蟮脑O(shè)計(jì)中,還是在數(shù)據(jù)庫(kù)跨越傳輸中。第二種方法都是最佳的首選。如果在配合Java與XML的API,實(shí)現(xiàn).net那樣的數(shù)據(jù)集本地化是輕而易舉的事。
還是那句話,如果真得能做到“真正的提高效率”,很難。畢竟,VS.net中的本地化數(shù)據(jù)庫(kù)并不是像我說(shuō)得這樣簡(jiǎn)單。
(僅供參考)
相關(guān)文章
前一則:
避免重啟你的應(yīng)用程序 二
后一則:
So what are inner classes good for anyway?(翻譯 by Gee)
本頁(yè)查看次數(shù):
公司公告
|
客戶調(diào)查
|
法律聲明
|
誠(chéng)聘英才
|
給我們投稿
|
繁
閃
頭像
京ICP備05031245號(hào)
Copyright @ REDCOME.com ALL Rights Reserved
北京怡康軟件科技有限公司 地址:北京市昌平區(qū)東小口立湯路188號(hào)北方明珠大廈1號(hào)樓2708 郵編:102218 電話:84909966 傳真:84909900 QQ:335601661