我有一个包含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
}

10-02 05:27