【问题标题】:Is there a way to have a JButton do one thing when first pressed, and do other things when it is pressed a second time有没有办法让 JButton 在第一次按下时做一件事,在第二次按下时做其他事情
【发布时间】:2020-10-12 04:21:38
【问题描述】:

我正在使用 Java 中的准备好的语句将月度财务数据插入数据库表中。我每个月第一次按下按钮时,我希望它进行 SQL 查询插入,但其他时间只是更新以避免同一个月重复。我怎么能做到这一点?

这是我的代码

    String dbQuery18 = "INSERT INTO weekly_finances VALUES (?,?,?,?)";
    String dbQuery19 = "INSERT INTO monthly_finances VALUES (?,?,?,?)";
    // Data to be entered 
    int weekNumber = 0;
    int monthNumber = 0;
    float weeklySum = 0;
    float monthlySum = 0;

    if (command.equals("Save"))
    {
        try
        {
            try
            {
                day = thisDay;
                weekNumber = thisWeek;
                monthNumber = thisMonth;

                PreparedStatement ps16 = myDbConn.prepareStatement(dbQuery16);
                // Passing Values into ps to fill in
                ps16.setInt(1, weekNumber);
                ResultSet res = ps16.executeQuery();
                while (res.next())
                {
                    int c = res.getInt(1);
                    weeklySum = weeklySum + c;
                };

                System.out.println("This is the weekly Sum = " + weeklySum);

                PreparedStatement ps17 = myDbConn.prepareStatement(dbQuery17);
                // Passing Values into ps to fill in
                ps17.setInt(1, monthNumber);
                ResultSet res1 = ps17.executeQuery();
                while (res1.next())
                {
                    int d = res1.getInt(1);
                    monthlySum = monthlySum + d;
                };

                // Inputting into Database 
                // Prepare Statement using Connection 
                PreparedStatement ps18 = myDbConn.prepareStatement(dbQuery18);
                // Passing Values into ps to fill in
                ps18.setInt(1, weekNumber);
                ps18.setFloat(2, weeklySum);
                ps18.setFloat(3, NULL);
                ps18.setFloat(4, NULL);         
                // Executing Update
                ps18.executeUpdate();

                PreparedStatement ps19 = myDbConn.prepareStatement(dbQuery19);
                // Passing Values into ps to fill in
                ps19.setInt(1, monthNumber);
                ps19.setFloat(2, monthlySum);
                ps19.setFloat(3, NULL);
                ps19.setFloat(4, NULL);  
                // Executing Update
                ps19.executeUpdate();

【问题讨论】:

  • “...第一次...每个月...”这句话有点令人担忧;它表明问题可能不像“按钮在第一次单击时执行 X,然后每次都执行 Y”那么简单。但是,是的,一般来说,有种方法可以使按钮的功能在每次点击时发生变化。

标签: java sql swing prepared-statement


【解决方案1】:

如果您希望多个按钮具有这种效果,我会创建一个名为“pressedButtons”的 ArrayList。然后当您处理单击时,检查 ArrayList 是否包含按钮。如果没有,则第一次单击,并将用户添加到 ArrayList。如果是这样,那是您的第二次点击。

但是,在您使用 sql 的情况下,我只是通过 SQL 命令检查数据是否已经存在,然后采取行动。

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2012-05-19
    • 2013-02-19
    • 1970-01-01
    相关资源
    最近更新 更多