使用Java保存记录

时间:2013-02-21 01:05:52

标签: java mysql date

我每次用户登录时都会保存日期日志。日期日志会在记录中保存日期,但我想要的是没有重复日期。它将检查记录是否已存在,如果是,则 它不会保存日期。如果记录尚不存在,则会保存日期。

这是我的代码:

 SimpleDateFormat dnow2 = new SimpleDateFormat("MMMMM dd, yyyy");

 ResultSet ds = MyDB.rsFetch("SELECT * FROM `date-logs` WHERE `Date` = '"+dnow.format(new java.util.Date())+"'");

 try {
   ds.next() ; 

   if (ds.getMetaData().getColumnCount() == 0) {
     MyDB.exSQL(  "INSERT INTO `date-logs` (`Date Code`, `Date`) " 
                + "VALUES ('"+dnow.format(new java.util.Date())+ "',"
                + "'"+dnow2.format(new java.util.Date())+"')");   
   }
 } catch (SQLException ex) {
   Logger.getLogger(FrmLogIn.class.getName()).log(Level.SEVERE, null, ex);
 }

3 个答案:

答案 0 :(得分:1)

最后我明白了!!!

 SimpleDateFormat dnow2 = new SimpleDateFormat("MMMMM dd, yyyy");

    ResultSet ds = MyDB.rsFetch("SELECT * FROM `date-logs` WHERE `Date Code` = '"+dnow.format(new java.util.Date())+"'");


  int resultsCounter = 0;  
    try {
        while(ds.next())  
        {  
        //procedure when results were returned  
        resultsCounter++;  
        }

        if (resultsCounter ==0)  
        {  

      MyDB.exSQL("INSERT INTO `date-logs` (`Date Code`, `Date`) VALUES ('"+dnow.format(new java.util.Date())+ "',"
                     + "'"+dnow2.format(new java.util.Date())+"')");
        }  
    } catch (SQLException ex) {
        Logger.getLogger(FrmLogIn.class.getName()).log(Level.SEVERE, null, ex);
    }

答案 1 :(得分:0)

我不知道您正在使用哪些数据库抽象内容,但您应该将其更新为使用prepared statements

接下来,您应该使用MySQL特定的查询,例如:

insert into date logs ... on duplicate key ignore 

确保Date是主键。如果密钥已存在于数据库中,则此类查询将忽略插入。

答案 2 :(得分:0)

您应该做的是为用户添加另一个外键(也将其设为主键)到date-logs表。即使您插入相同的数据两次,它也会忽略查询,因为主键已存在于数据库中。