我每次用户登录时都会保存日期日志。日期日志会在记录中保存日期,但我想要的是没有重复日期。它将检查记录是否已存在,如果是,则 它不会保存日期。如果记录尚不存在,则会保存日期。
这是我的代码:
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);
}
答案 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
表。即使您插入相同的数据两次,它也会忽略查询,因为主键已存在于数据库中。