检查SQLite中是否存在某些内容

时间:2015-06-25 20:27:36

标签: java android sqlite

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

1 个答案:

答案 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
}