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