2013-11-01 90 views
0

我在4行和4列的數據庫中有一個表。每列包含不同的數據。 現在我想檢索數據庫中的所有數據,並將它們放在另一個表單上的JLabel上。即 在我的數據庫中有。從數據庫獲取值到JLabel

的packageName .....每月費用..... YearlyFee ....... TotalFee

定期.................... .150 .................. 300 .................... 450

金.. ....................... 300 ................... 400 ...... ............ 700

..... ..... .... ....

現在我有我已經把4個空表單JLabels在四行中,但我如何從數據庫中檢索值並將每個值放在適當位置te標籤?

這就是我所做的,但我仍然無法解決它。我卡住了。

謝謝大家。

public void getPrices() 
{ 

    String srt ="SELECT * FROM program_tbl"; 

    try 
    { 
     con.connect(); 

     ps = con.con.prepareStatement(srt); 

     rs = ps.executeQuery(); 
     ResultSetMetaData data = rs.getMetaData(); 
     int colums = data.getColumnCount(); 

      while(rs.next()) 
      { 

       Vector rows = new Vector(); 
       for (int i = 1; i < colums; i++) 
       { 
        rows.addElement(rs.getObject(i)); 
       } 

............................................ ..........................

回答

2

如果你想得到這個數據作爲一個字符串,那麼你可以嘗試類似於:

Vector<String> rows = new Vector<String>(); 
while(rs.next()) { 
    String rowEntry = rs.getString("packageName") + 
        rs.getString("monthlyFee") + 
        rs.getString("yearlyFee") + 
        rs.getString("totalFee") +    
    rows.add(rowEntry); 
} 

如果不是字符串,而是一個目標是以後使用,那麼你可以創建一個類:

public class MyObject { 
    private String packageName; 
    private int monthlyFee; 
    private int yearlyFee; 
    private int totalFee; 

    public MyObject (String name, int monthlyFee, int yearlyFee, int totalFee) { 
     this.packageName = name; 
     this.monthlyFee = monthlyFee; 
     this.yearlyFee = yearlyFee; 
     this.totalFee = totalFee; 
    } 

    /*Setters 
    *And 
    *Getters*/ 
} 

然後用它作爲:

Vector<MyObject> rows = new Vector<MyObject>(); 
while (rs.next()) { 
    MyObject obj = new MyObject(rs.getString("packageName") 
           , rs.getInt("montlyFee") 
           , rs.getInt("yearlyFee") 
           , rs.getInt("totalFee") 
           ); 
    rows.add(obj)  
} 

所以說我們現在有字符串值向量 - Vector<String> rows; 現在我想創建這些的JLabel。

JLabel[] myLabels = new JLabel[v.size()]; 
for(int i=0; i<rows.size(); i++) { 
    as[i] = new JLabel(rows.get(i)); 
} 

現在我們必須的Jlabel陣列準備投入到小程序。

+0

但是,我現在如何將每個值附加到其他窗體上的相應標籤上。 –

+0

你可以創建一個JLabel數組(每個數據庫從db開始),然後用labelArray [i] = new JLabeL(Vector.get [i])創建一個for循環。 –

+1

將您的標籤定義爲類成員,而不是創建方法中的本地成員。然後分配值。 – alex2410

1

請勿使用JLabel。您無法輕鬆格式化數據,以便獲取表格數據。

而應該使用JTable。請閱讀Swing教程How to Use Tables中的部分了解更多信息。您還可以在論壇中搜索與ResultSet一起使用JTable的示例。