两段代码,代码2无法调用代码1

代码1:

public ArrayList queryBalance(String income) {
ArrayList al=new ArrayList();
DBUtil db=new DBUtil();
try {
java.sql.Connection con=db.getConnection();
String sql="select * from balance where income=?";
java.sql.PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1, income);

        java.sql.ResultSet rs=ps.executeQuery();
        Bean gb=new Bean();

        while(rs.next()) {
            gb.setMItem(rs.getString(2));
            if(Integer.parseInt(rs.getString(2))==0) {
                gb.setMIncome("支出");
            }
            else if(Integer.parseInt(rs.getString(2))==1){
                gb.setMIncome("收入");
            }

            gb.setMMoney(rs.getDouble(3));
            gb.setMName(rs.getString(4));
            gb.setMId(rs.getString(5));
            gb.setMTime(rs.getString(6));
            al.add(gb.toString());
        }
        db.close(ps, rs, con);
    }

    catch(java.sql.SQLException sqle) {
         sqle.printStackTrace();
    }
    return al;
}

}

代码2:
ArrayList al = new ArrayList();
al = dao.queryBalance(income);
txaInner.setText(al.toString());

taxInner是我定义的一个文本框(JTextArea),想把代码1 SQL操作之后得到的数据调入文本框中,但是没反应.这是一个个人财务管理系统的代码,想把数据库中存入的财务信息调入文本框中显示,文本框在界面中.

该回答引用ChatGPT

代码1中的queryBalance方法是用来查询数据库中某个收支类型的所有财务记录,并将记录封装成Bean对象加入到ArrayList中返回的。代码2中的al变量是用来存放queryBalance方法返回的ArrayList对象的,然后将其转化成String类型后显示在文本框中。


根据提供的代码,有以下可能出现问题的地方:

  • dao对象没有被正确创建和初始化,导致调用其方法时出现NullPointerException错误。
  • income变量没有被正确赋值或者其值不符合预期,导致查询数据库时出现错误或返回结果为空。
  • txaInner文本框没有正确显示文本内容,可能是其大小设置不正确或者设置了不允许修改文本的属性。

解决方案:

  • 确认dao对象已被正确创建并调用了getConnection方法获取数据库连接,可以在代码2前添加以下语句进行调试:
    dao = new DAO();
    if(dao == null) {
      System.out.println("dao is null");
    } else {
      System.out.println("dao is not null");
    }
    System.out.println("connection is " + dao.getConnection());
    
  • 确认income变量已被正确赋值并符合查询条件,在调试时可以输出income变量的值,检查是否与预期一致。
  • 确认文本框的大小设置和属性设置是否正确,可以将其属性设置为可修改,再将文本框内容输出到控制台,检查是否正确获取了查询结果:
    txaInner.setEditable(true);
    System.out.println("result is " + al.toString());
    txaInner.setText(al.toString());