2014-01-22 6 views
0

У меня есть три таблицы (Обучение, Личность и посещаемость). Соединение между таблицей; Обучение имеет свои области, одинаковые для человека. И таблица посещаемости имеет только два поля training_id и person_id. Когда человек регистрируется на тренинге, training_id и person_id вставляются в таблицу посещаемости. Хорошо, я могу вставить нового человека. Когда человек, который уже присутствовал на тренинге и хочет обновить себя, таблица (человек) обновляется, но в таблице посещаемости человек снова вставлен. Я хочу, когда человек обновляется, таблица посещаемости не должна вставлять его снова.Нельзя вставлять данные в базу данных, если данные уже доступны в таблице

Я пробовал это;

public void registerToTraining(int training_id) { 
    DatabaseHelper db = DatabaseHelper.getInstance(); 
    String query = "SELECT * FROM attendance WHERE training_id = " 
      + Integer.toString(training_id) + " AND person_id = " 
      + Integer.toString(this.getId()) + ";"; 

    db.sqlCommand(query); 

    if(The query does not return one row or more){ 

     String command = "INSERT INTO attendance (training_id , person_id) VALUES (" 
       + Integer.toString(training_id) 
       + ", " 
       + Integer.toString(this.getId()) + ") ;"; 

     db.sqlCommand(command); 
    } 
+0

Смотрите также http://stackoverflow.com/questions/1105141/sqlite-prevent-duplicates – user2314737

ответ

1

Первый запрос, затем база данных, затем переместите курсор в первую очередь или нет.

if(cursor.moveFirst) 
{ 
Aleady exsist data. 
}else 
{ 
new data insert 
} 
+0

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

+0

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

+0

У меня просто идея идеи реализации. Не могли бы вы изменить это, чтобы исправить? – bShah

1

Вы можете использовать UNIQUE ограничение на столбцах таблицы при его создании и пропустить противоречивую строку, когда ограничение нарушается (http://www.sqlite.org/lang_conflict.html)

CREATE TABLE attendance (training_id INT, person_id INT, UNIQUE(training_id, person_id) 
    ON CONFLICT IGNORE); 
+0

Чувак! Я хочу придерживаться своего кода. Твой путь можно сделать, но я не хочу менять свой путь. – bShah

Смежные вопросы