如何实现String变量而不是'Landschaft'?

时间:2015-03-07 17:44:54

标签: java android database sqlite android-sqlite

我创建了一个SpinnerActivity,如下所示:

  

http://img4.fotos-hochladen.net/uploads/bildschirmfotovse8j4po1t.png

现在举例来说,如果我选择'Landschaft'(英文:landscape),我想在DatabaseHandler.java中搜索属于'Landschaft'(风景)类别的位置

因此我在DatabaseHandler.java中编写了以下方法:

在这种方法中,我刚写了Kategorie = Landscape。

但是我想,我的Spinner中选定的SpinnerArray(Landschaft,Brücken等等)将被插入我的DatabaseHandler而不是“Landschaft”中,我该怎么做?

public List<Position> getAllPositionsWithCategory() {
        List<Position> positionList = new ArrayList<Position>();

        String selectQuery = "SELECT * FROM " + TABLE_POSITIONS
                + " WHERE Kategorie = 'Landschaft'";

        SQLiteDatabase db = this.getWritableDatabase();

        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list

        if (cursor.moveToFirst()) {

            do {

                Position position = new Position();

                position.setID(Integer.parseInt(cursor.getString(0)));

                position.setName(cursor.getString(1));

                position.setKategorie(cursor.getString(2));

                position.setLaenge(cursor.getFloat(3));

                position.setBreite(cursor.getFloat(4));

                // Adding position to list

                positionList.add(position);

            } while (cursor.moveToNext());

        }
}

1 个答案:

答案 0 :(得分:0)

只需在查询中用?替换固定的String,并将值插入db.rawQuery()的第二个参数中。

以下内容适用于您的情况:

String selectQuery = "SELECT * FROM " + TABLE_POSITIONS
            + " WHERE Kategorie = ?";
// ...
Cursor cursor = db.rawQuery(selectQuery, new String[] { "Landschaft" });

现在,您可以使用您选择的变量替换字符串"Landschaft"

另请参阅:http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String,%20java.lang.String[])