将数据库记录设置为jtextfield

时间:2014-12-06 02:48:44

标签: java database jtextfield

我的代码问题是它无法将数据库中的数据设置到我的jtextfield上。每次运行我的代码时,都会显示StackOverflowError。我怎么能解决这个错误?

这是我的代码

public class DataConnect extends DatabaseGUI {
    private Connection dataCon;
    private Statement dataStmt;
    private ResultSet dataRS;
    private String name, address;
    int age;


    public DataConnect(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            dataCon = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentrec","root","");
            dataStmt = dataCon.createStatement();
            dataRS = dataStmt.executeQuery("Select * from studentrecords");
        }catch(Exception exc){
            System.out.println(exc.getMessage());
        }
    }

    public void setData(){
        try{
            dataRS.next();
            name = dataRS.getString("Name");
            age = dataRS.getInt("Age");
            address = dataRS.getString("Address");
            DatabaseGUI dbGui = new DatabaseGUI ();

            dbGui.jtfData[0].setText(name);
            dbGui.jtfData[1].setText(Integer.toString(age));
            dbGui.jtfData[2].setText(address);
           //System.out.println(name+" "+age+" "+address);
         }catch(Exception exc){

        } 
    }

}

1 个答案:

答案 0 :(得分:0)

问题的可能原因在于:

public class DataConnect extends DatabaseGUI {
    //...


    public DataConnect(){
        //...
    }

    public void setData(){
        try{

            DatabaseGUI dbGui = new DatabaseGUI ();  //*****

您正在一个扩展DatabaseGUI的类中创建一个新的DatabaseGUI对象,并承担无限递归的风险。解决方案:您可能不希望DataConnect扩展DatabaseGUI,或者您不希望在DataConnect内部或两者中创建新的DatabaseGUI。如果您已经有一个显示的DatabaseGUI,那么您不想创建另一个未显示的DatabaseGUI,而是想要设置已经显示的GUI组件的数据,而不是您在该组件上创建的新组件的数据。点。

另外,我不得不怀疑 - 您是否在DatabaseGUI类中创建了一个DataConnect对象?通过进行一些调试来找出特别导致异常的代码,可以大大改善您的问题。

这个空的捕获块

catch(Exception exc){

}

是永远不会发生的代码。至少打印堆栈跟踪。