从Database获取值到JLabel

时间:2013-11-01 07:55:21

标签: java swing

我在4rows和4columns的数据库中有一个表。每列包含不同的数据。 现在我想检索数据库中的所有数据,并将它们放在另一个表单上的JLabel上。即 在我的数据库中我有。

packageName ..... monthlyFee ..... YearlyFee ....... TotalFee

正...................... 150 .................. 300 .... ................ 450

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

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

现在我有一个表单,我已经在4行中放置了4个空JLabel但是如何从数据库中检索值并将每个值放在相应的Label中?。

这就是我所做的,但我仍然无法绕过它。我卡住了。

谢谢任何人。

 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 个答案:

答案 0 :(得分: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);
}

如果不是String,而是稍后使用的对象,则可以创建一个类:

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数组可以放到applet中了。

答案 1 :(得分:1)

不要使用JLabel。您无法轻松格式化数据,以便获得表格数据。

相反,你应该使用JTable。有关详细信息,请阅读How to Use Tables上Swing教程中的部分。您还可以在论坛中搜索使用带有ResultSet的JTable的示例。