精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(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è)查看次數(shù):