我有一个包含3个字段的SQLite表:第一个是id
(自动增量),第二个是markerID
(字符串),第三个是score
(整数)。
如果表中尚不存在活动的当前markerID
,我想添加一个新行。
问题是,当光标经过条目并且已经有一个没有当前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;
}
答案 0 :(得分:1)
方法
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
有一个参数&#39; selection&#39;,您可以在其中放置您的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
}