我有一个包含3个字段的SQLite表:第一个是id
(自动递增),第二个是markerID
(字符串),第三个是score
(整数)。
如果活动的当前markerID
在表中不存在,我想添加新行。
问题是,由于光标经过条目,并且已经有一个没有当前markerID
的条目,所以即使表中没有当前的,它也应该为表中存储的每个不同的markerID添加一个新的存在。
如何检查markerID
是否根本不存在,而不仅仅是询问它是否不等于当前的markerID
?
if (cursor.moveToFirst()) {
do {
Log.d("Database", "Inhalt: "+ cursor.getString(0) + cursor.getString(1));
if (Integer.parseInt(cursor.getString(0)) < 5 && cursor.getString(1).equals(markerID)) {
/*markerID exists: Update Entry*/
dbh.updateScore(dbh, Integer.parseInt(cursor.getString(0)), markerID, score);
finish();
}
else if (!cursor.getString(1).equals(markerID) ){
/*markerID does not exist in Table: add new, but not for every entry where it does not equal to the current!*/
dbh.addScore(dbh, score, markerID);
finish();
}
} while (cursor.moveToNext());
}
else {
/*Add first entry*/
dbh.addScore(dbh, score, markerID);
finish();
}
这是我在
DbHelper
类中生成游标的方式: public Cursor getScore(DbHelper dbh) {
dbase = dbh.getReadableDatabase();
String columns[] = {COLUMN_SCORE, COLUMN_MARKERID};
Cursor cursor = dbase.query(SCORE_TABLE, columns, null, null, null, null, null);
return cursor;
}
最佳答案
方法
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
有一个参数“选择”,您可以在其中放置markerID。像这样:
Cursor cursor = dbase.query(SCORE_TABLE, columns, "markerId = 'your string'", null, null, null, null);
if (cursor != null && cursor.getCount() > 0) {
// you have rows with this marker id
}