我的代码问题是它无法将数据库中的数据设置到我的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){
}
}
}
答案 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){
}
是永远不会发生的代码。至少打印堆栈跟踪。