2013-02-21 3 views
0

Я сохраняю журналы регистрации каждый раз, когда пользователь входит в систему. Журналы даты сохраняют дату в записи, но я хочу, чтобы там не было дубликатов. Он проверит, если запись уже существует, и если да , она не сохранит дату. Если запись еще не существует, она сохранит дату.Сохранение записей с использованием Java

Вот мой код:

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

Итак, в чем ваш вопрос? – Jayamohan

+0

если существующая запись в базу данных она больше не будет экономить, если. новая запись будет сохранена. когда я запускаю это, ничего не получается, можете ли вы мне помочь – kelvzy

+1

Вы проверили, правильно ли работает ваш запрос SELECT, т.е. если он фактически возвращает какой-либо результат. Похоже, вы форматируете свою дату как «MMMMM dd, yyyy», которая оценивается до «21 февраля 2013 года». Можете ли вы проверить, будет ли запрос SELECT * FROM 'date-logs' WHERE' Date' = '21 февраля 2013 года' извлекать любой результат. – Jayamohan

ответ

0

Я не знаю, какая база данных абстракции материал вы используете, но вы должны обновить его использовать prepared statements.

Далее, вы должны использовать MySQL конкретный запрос, например:

insert into date logs ... on duplicate key ignore 

убедитесь, что дата является первичным ключом. Этот вид запроса будет игнорировать вставки, если ключ уже существует в базе данных.

+0

, если я сделаю этот первичный, тогда когда другой пользователь войдет в систему, это вызовет ошибку. – kelvzy

+0

к вашему примеру, вы не храните какую-либо информацию о пользователе в таблице журналов, поэтому это не имеет значения. Если это так, вы можете использовать составной первичный ключ в столбцах имени пользователя и даты. – jdevelop

+0

MyDB.exSQL ("INSERT INTO' date-logs' ('Date Code',' Date') " +" VALUES ('"+ dnow.format (новый java.util.Date()) +"', " + "'" + dnow2.format (новый java.util.Date()) + "')"); – kelvzy

0

Что вы должны сделать, это добавить другой внешний ключ для пользователя (сделайте его первичным) в таблицу date-logs. Даже если вы вставляете одни и те же данные дважды, он будет игнорировать запрос, поскольку первичный ключ уже существует в базе данных.

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); 
    } 
Смежные вопросы