【问题标题】:Setting database records into jtextfield将数据库记录设置到 jtextfield
【发布时间】:2014-12-06 02:48:44
【问题描述】:

我的代码的问题是它无法将数据库中的数据设置到我的 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){

        } 
    }

}

【问题讨论】:

    标签: java database jtextfield


    【解决方案1】:

    您的问题的可能原因在这里:

    public class DataConnect extends DatabaseGUI {
        //...
    
    
        public DataConnect(){
            //...
        }
    
        public void setData(){
            try{
    
                DatabaseGUI dbGui = new DatabaseGUI ();  //*****
    

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

    另外,我想知道——您是否在 DatabaseGUI 类中创建了一个 DataConnect 对象?通过进行一些调试以找出哪些代码特别会导致异常发生,可以大大改善您的问题。

    还有这个空的catch块

    catch(Exception exc){
    
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多