1

渡されたパラメータに従ってデータベースの行を取得する必要があります

たとえば、38歳で、アーティストの女性である名前で並べ替えられたすべての人を選択すると、渡されたパラメータは次のようになります。

String age=38;
String gender=female;
String job=artist;

私はこれを書き込もうとしましたが、確かに私のrawQueryに構文エラーがあります

public Cursor getData(String age, String gender, String job) {
        try {
            Cursor c = mDb.rawQuery("SELECT * FROM mytable order by Name asc WHERE Age='"+age+"'"  WHERE Gender='"+gender+"'" WHERE Job='"+job+"'", null);
            if (c != null) {
                c.moveToNext();
            }
            return c;
        } catch (SQLException mSQLException) {
            Log.e(TAG, "getData>>" + mSQLException.toString());
            throw mSQLException;
        }

    }

誰かが私がそれを修正するのを手伝ってくれるでしょうか?

4

3 に答える 3

2

AgeがString型の場合は、次を試してください。

Cursor c = mDb.rawQuery("SELECT * FROM mytable WHERE Age LIKE \""+age+"\" AND Gender LIKE \""+gender+"\" AND Job LIKE \""+job+"\" order by Name asc", null);

Ageが整数型の場合は、次を試してください。

Cursor c = mDb.rawQuery("SELECT * FROM mytable WHERE Age = \""+age+"\" AND Gender LIKE \""+gender+"\" AND Job LIKE \""+job+"\" order by Name asc", null);

よろしく。

于 2012-11-30T01:22:28.520 に答える
2

There are multiple errors in your SQL syntax. The ORDER BY clause should come at the end. Multiple conditions should be joined by the AND keyword, not multiple WHEREs. Finally, your quotes are not properly matched.

Below is the proper SQL query:

SELECT * FROM mytable WHERE Age LIKE '"+age+"' AND Gender LIKE '"+gender+"' AND Job LIKE '"+job+"' ORDER BY Name ASC;

于 2012-11-30T01:25:18.970 に答える
1

rawQuery("SELECT * FROM mytable WHERE ( Age = ? and Gender = ? and Job= ? ) order by Name asc",new String[]{age,gender,job})

于 2012-11-30T01:25:22.603 に答える