如果数据已在表中可用,则不允许将数据插入数据库

时间:2014-01-22 07:20:58

标签: android android-sqlite insert-update

我有三张桌子(培训,人员和出勤)。表之间的连接是;培训的领域与人相同。并且出勤表只有两个字段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);
    }

2 个答案:

答案 0 :(得分:1)

首先查询然后数据库,然后将光标移动到第一个或不。

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

答案 1 :(得分: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);