2012-02-10 26 views
1

在java中使用數據庫需要編寫一組代碼行。如果數據庫連接再次建立--n再次,相同的一組行需要再次重複--n再次,這給編程人員造成了開銷。ResultSet的數據結構

因此,我正在做一個實用程序類作爲數據庫代理。這個類的方法將負責建立一個連接到執行查詢並返回結果的所有數據庫相關的東西。

我的班級是這樣的 -

package connect; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class Connector 
{ 
private ResultSet rs; 
public String password; 

public void connect(String dbUrl, String dbClass, String dbUserName, String dbPassword, String query) 
{ 
    try 
    { 
     Class.forName(this.dbClass).newInstance(); 
     Connection conn = DriverManager.getConnection (dbUrl, dbUserName, dbPassword); 
     Statement stmt = conn.createStatement(); 
     rs = stmt.executeQuery(query); 

     while(rs.next()) 
     { 
      this.password = (String) rs.getObject(1); 
     } 

     conn.close(); 
    } //end try 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
} 

當程序員需要查詢被執行,低於線可以爲目的而編寫 -

Connector con = new Connector(); 
con.connect("your database URL", 
      "your database driver", 
      "your database username", 
      "your database password", 
      "your query"); 

這裏我的問題是,現在我在連接方法本身中從ResultSet中獲取數據。檢索到的數據可能因查詢到查詢而異,因此我想要一個數據結構,我可以在rs()方法中存儲數據並返回它。

它看起來像 -

<data structure> result = con.connect("your database URL", 
             "your database driver", 
             "your database username", 
             "your database password", 
             "your query"); 

可有人請建議我用於此目的的數據結構?

+1

你應該閱讀關於「標準」:Hibernate,[JPA](http://en.wikipedia.org/wiki/Java_Persistence_API)等 – PeterMmm 2012-02-10 11:30:18

+0

@PeterMmm嗯,Hibernate和Spring做到了這一點,但我的項目需求並沒有允許我使用它們。 – 2012-02-10 11:34:46

回答

3

不知道你爲什麼要重新發明這個特定的輪子,而且似乎如果你反覆連接每一個查詢,你基本上寫自己的任何表現,但爲什麼不只是使用RowSetDynaClass,不打算映射到對象?

請注意,有大量已經過測試和驗證的預先存在的解決方案。並使用連接池;創建連接是昂貴的。

+0

連接池似乎是一個有趣的。我會仔細看看的。 – 2012-02-10 11:37:42

0

如果您不能使用已經提供給您解決問題的庫,你可以使用

Vector<Map<String, Object>> 

如果字符串包含列名稱和對象是列的值。 Vector中的每個元素都對應於ResultSet的一行。這可能不是最有效的數據結構,但應完成工作。