亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

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