为了账号安全,请及时绑定邮箱和手机立即绑定

两个jtables的代码相同,但是其中一个不能从SQL表中获取值

两个jtables的代码相同,但是其中一个不能从SQL表中获取值

尚方宝剑之说 2021-05-04 17:54:03
请帮助我解决此问题,还告诉我如何通过使用comboBox上的条件在表上显示数据。以下是代码和输出。请帮助我,因为我明天必须将此内容显示给我的老师。public ArrayList<User> userList() {    ArrayList<User> usersList = new ArrayList<>();    try{        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");        String url="jdbc:sqlserver://localhost:1433;databasename=DB_Project;user=User;Password=password";        Connection con= DriverManager.getConnection(url);        String query = "SELECT * FROM tbl_Income";        Statement st=con.createStatement();        ResultSet rs= st.executeQuery(query);        User user;        while(rs.next()){            user= new User(rs.getInt("Amout"),rs.getString("Date"),rs.getString("Source"));            usersList.add(user);                  }    }    catch(Exception e){        JOptionPane.showMessageDialog(null,e);    }    return usersList;    }public void show_user() {    ArrayList<User> list = userList();    DefaultTableModel model = (DefaultTableModel)Income_Table.getModel();    Object[] row =new Object[3];    for(int i=0;i<list.size();i++){        row[0]=list.get(i).getAmout();        row[1]=list.get(i).getDate();        row[2]=list.get(i).getSource();        model.addRow(row);    }}//**********tbl_Expensepublic ArrayList<User_E> userList_E() {    ArrayList<User_E> UsersList_E = new ArrayList<>();    try{        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");        String eurl="jdbc:sqlserver://localhost:1433;databasename=DB_Project;user=User;Password=password";        Connection con= DriverManager.getConnection(eurl);        String query_E = "SELECT * FROM tbl_Expense";        Statement stt=con.createStatement();        ResultSet rst= stt.executeQuery(query_E);        User_E user_e;        while(rst.next()){            user_e = new User_E(rst.getString("ExpenseDetail"),rst.getString("Category"),rst.getString("Date"),rst.getInt("Amount"));            UsersList_E.add(user_e);    }    }
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

通过查看已发布的代码,我无法分辨出问题所在。但是,需要对应用程序的数据库访问,在GUI中查询和显示数据进行结构化,如下所示:

1.访问数据库并获取连接: 获取数据库的连接对象DB_Project(无需创建连接对象两次)。

2.查询1:

  • 建立陈述

  • 查询tbl_Income表并填充“ userList”

  • 关闭语句(这也会关闭相应的结果集)

3.查询2:

  • 建立陈述

  • 查询tbl_Expense表并填充“ userList_E”

  • 关闭语句

4.紧密连接(这是可选的,取决于应用程序要求)。

5.使用查询的数据显示GUI:

  • JTable使用“ userList”显示用户收入

  • JTable使用“ userList_E”显示用户费用

笔记:

在Java代码中放置一些调试或日志语句,并验证要查询的表中是否有任何数据,以及它是哪种数据。直接和交互式查询数据库表或从命令提示符查询数据库表也有帮助。同样,在填充列表集合之后,使用System.out.prinltln()语句将列表打印到控制台上,以验证是否正确地向其中填充了数据。

如何根据组合框选择显示:

这是使用Swing JComboBox的Java教程的链接-请参见“处理组合框上的事件”一节。

有多种方法可以构建代码来实现此功能。

  1. 通过使用从组合框中选择的数据直接查询数据库表,或

  2. 通过从已经查询并填充到“列表”中的数据中过滤数据。此选项要求从数据库表中查询的数据存储在实例变量中。

同样,这取决于应用程序的要求。如果数据库表数据没有更改,则选项2是正确的方法,否则直接查询数据库表。


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信