更新当天后,MySQL / Java不再连接

时间:2019-03-08 13:25:39

标签: java mysql date save days

我正在对该软件(Java + MySQL)进行编程,该软件每天都会在特定表中保存一个新注册表。该表具有用于存储日期的字段“日期”。当软件启动时,首先发生的事情是在该注册表中进行搜索,以查找日期是新的日期还是已保存的日期,因此该软件可以在一天中多次打开而无需进行两次保存。

我这样做是通过将实际的“现在”日期保存在字符串中进行的-我通过在数据库中的简单搜索来比较-使用称为StartValues()的方法。

date = new Date(System.currentTimeMillis()); 
formateDateBD = new SimpleDateFormat("yyyy-MM-dd");
date_save = formatarDateBD.format(date);

这很完美,从来没有问题。当我在代码中发现一个违规时,问题就开始了:当日期更改(23:59-00:00)时,它应该更改日期,因此我制定了一种方法,将实际的“现在”日期与存储在其中的旧日期进行比较之前的字符串date_save

public static void TestDate(){    
       Date newDate = new Date(System.currentTimeMillis());
       formateDateBD = new SimpleDateFormat("yyyy-MM-dd");
       String dateTest = formatarDateBD.format(newDate);
       if(!dateTest.equals(date_save)){
             CorrectDate();
             StartValues();
       }
}

到目前为止,也是如此。如果“现在”是与以前不同的日期,它将更改日期。每当我需要保存一些注册表时,都会打电话给TestDate(),这会导致需要保存新的一天。 CorrectDate()只是将date_save变量更改为新变量,我只是重用了之前的代码。我还调用了一个函数StartValues(),它与我最初调用的函数相同。基本上,它应该存储新日期,但是不可以。

public static String StartValues(){
        String retorno = "";
        int resultado;
        String caixa_anterior = "";
        String banco_anterior = "";
        String query;
        try{
            //search the last livro caixa
            query = "SELECT * FROM lc_livro_caixa " +
                            "ORDER BY id_lc_livro_caixa DESC " +
                            "LIMIT 1";
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(query);
            //if finds
            if (rs != null){ //MAYBE THE ERROR IS HERE?????????
                if(rs.next()){   
                    //if the last date is today
                    if (data_save.equals(rs.getString("data"))){
                        retorno = "dia_existente";
                    }
                    //if not, should save a new date (today)
                    else {
                        caixa_anterior = rs.getString("caixa_saldo");
                        banco_anterior = rs.getString("banco_saldo");
                        retorno = "novo_dia";
                    }
                }
                //if this is the first time the software is running
                else{
                    try{
                        query = "INSERT INTO lc_livro_caixa (data, caixa_saldo, caixa_entrada, caixa_saida, "
                                        + "banco_saldo, banco_entrada, banco_saida) VALUES "
                                        + "('" + data_save + "', 0, 0, 0, "
                                        + "0, 0, 0)";
                        st = (Statement) c.createStatement();
                        resultado = st.executeUpdate(query);
                        if (resultado == 1){
                            retorno = "primeiro_dia";
                        }
                    } catch (Exception e){            
                    }   
                }
            }
            st.close();
            rs.close();
        } catch (Exception e){  
            //it's here where it goes actually when the day changes (23:59 - 00:00), it shouldn't be!!!
        }
        if(retorno.equals("novo_dia")){
            try{
                query = "INSERT INTO lc_livro_caixa (data, caixa_saldo, caixa_entrada, caixa_saida, "
                                        + "banco_saldo, banco_entrada, banco_saida) VALUES "
                                        + "('" + data_save + "', " + caixa_anterior + ", 0, 0, "
                                        + banco_anterior + ", 0, 0)";
                Statement st = (Statement) c.createStatement();
                resultado = st.executeUpdate(query);
                if (resultado == 1){
                    System.out.println("Dados salvos no banco.");
                }
                st.close();
            } catch (Exception e){            
            }
        }
        return retorno;
    }

对不起,该代码仍然带有葡萄牙语变量。发生的事情是,该代码对于白天在软件中的第一个入口是相同的,可以正常工作,而在一天之后的第一个识别发生更改(23:59-00:00),这根本不起作用。使用相同的方法,为什么只有在软件启动后才能起作用?也许与MySQL有关?
我不明白!我使用System.out.println进行调试,但是最后一个起作用的代码行是ResultSet,然后我评论了“这里有错误吗?”。 那么,对此有何想法?

0 个答案:

没有答案