如何将Java中的SQL查询结果打印到每列的各个JTextField?

时间:2011-12-02 17:04:42

标签: java sql swing jtextfield jtextarea

我编写了一个Java程序,可以将客户添加到数据库中,然后通过用户名或customer_id查找它们。

我可以毫无问题地将用户添加到数据库中。此外,我可以通过用户名或customer_id选择用户,并将用户信息打印到JTextArea中以供查看。但是,我想要做的是将用户信息从数据库行中的每个特定列打印到表单上相应的JTextField。我想我需要使用数组才能这样做,但到目前为止我还没有成功。

此时我选择的数据如下:

public String selectCustomer() throws ClassNotFoundException, SQLException{
    String result = "";
    String strSQL = "SELECT * FROM customer WHERE username = '" + this.getUsername() + "'"; 
    DataAccess DA = new DataAccess();
    ResultSet rs;
    try{
        rs = DA.getResultSet(strSQL);
        ResultSetMetaData metaData = rs.getMetaData();
        int columns=metaData.getColumnCount();
        while(rs.next()){//reading one record
            for(int i=1;i<=columns;++i) {//this reads column by column
                result+="<"+metaData.getColumnName(i)+">";
                result+=rs.getString(i);
                result+="</"+metaData.getColumnName(i)+">\n";
            }//closes for loop
        }//closes while loop
    }//closes try       
    catch(SQLException sqle){sqle.printStackTrace();}   
    catch(Exception e){e.printStackTrace();}
    return result;
}

现在我需要更改代码以将我的列结果放入数组中,然后我应该能够简单地从数组中提取数据,对吗?我可以完全脱离摇杆。我不知道。 d:

任何建议都将受到赞赏。

谢谢!

2 个答案:

答案 0 :(得分:1)

当然,您可以使用getString(和其他getXXX方法)从ResultSet中获取值,然后使用setText将值放入文本字​​段中。

本教程可能有所帮助:http://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html

PS我忘了说,如果你愿意的话,你可以按列名而不是列索引来获取值 - 这稍微慢一些但是使代码更容易编写和维护。

HTH

答案 1 :(得分:1)

也许这样的东西可以帮助你,你可以创建语句和连接作为实例变量,所以你可以检查它是否是开放的。如果要作为数组返回

,则应使用多维数组
 public ArrayList<ArrayList<String>> getQueryResult(String query){

            ArrayList<ArrayList<String>> feedback = new ArrayList<ArrayList<String>>();
            ArrayList<String> feed = null;

            try {
                ResultSet rs = stm.executeQuery(query);

                ResultSetMetaData rsm = rs.getMetaData();
                    feed = new ArrayList<String>();

                    for(int y = 1;y<rsm.getColumnCount();y++){

                        feed.add(rsm.getColumnName(y));
                    }
                    feedback.add(feed);

                while(rs.next()){
                    feed = new ArrayList<String>();
                for(int i=1;i<=rsm.getColumnCount();i++){

                        feed.add(rs.getString(i));
                }
                feedback.add(feed);
            }



            } catch (SQLException e) {
                //handler
            }
            return feedback;

        }