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

请帮助我解决此问题,还告诉我如何通过使用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_Expense

public 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);

    }

    }


http://img1.mukewang.com/60a4cec900019f2408620557.jpg

尚方宝剑之说
浏览 122回答 2
2回答

眼眸繁星

通过查看已发布的代码,我无法分辨出问题所在。但是,需要对应用程序的数据库访问,在GUI中查询和显示数据进行结构化,如下所示:1.访问数据库并获取连接:&nbsp;获取数据库的连接对象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教程的链接-请参见“处理组合框上的事件”一节。有多种方法可以构建代码来实现此功能。通过使用从组合框中选择的数据直接查询数据库表,或通过从已经查询并填充到“列表”中的数据中过滤数据。此选项要求从数据库表中查询的数据存储在实例变量中。同样,这取决于应用程序的要求。如果数据库表数据没有更改,则选项2是正确的方法,否则直接查询数据库表。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java