5

デバイスではこのエラーが発生しますが、別のデバイスでは問題なく動作します。エラーは次のとおりです。

Caused by: android.database.sqlite.SQLiteException: not an error
    at android.database.sqlite.SQLiteQuery.nativeFillWindow(Native Method)
    at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:86)
    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:164)
    at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:156)
    at com.Orange.MakeVisits.Themes.onCreate(Themes.java:162) 

クエリを実行すると、カーソルが null かどうかを確認する行で、このエラーが発生します。これが私のコードです:

    String stmtGetThemes = "SELECT * FROM pr_fields_descriptor a "
   + "inner join pr_fields_starring b on a.id_fields_descriptor = b.fields_descriptor_id "
   + "where b.starring_id = '"+pos_starring_id+"' and a.theme_id='"+themes_ids[m]+"' order by form_rank";

    Cursor getThemesCursor1 = db.databaseQuery(stmtGetThemes);

    if (getThemesCursor1!=null && getThemesCursor1.getCount()>0){
    //----
    }

および databasequery はこのメソッドです ( を拡張するクラスで定義されていますSQLiteOpenHelper):

public Cursor databaseQuery(String stmt) {
        Cursor cursor = db.rawQuery(stmt, null);
        return cursor;
    }

このエラーの原因は何ですか? ステートメントは良くないですか?なぜ他のデバイスで動作するのですか? どんなアイデアでも大歓迎です。よろしくお願いします。

4

2 に答える 2

0
String stmtGetThemes = "SELECT * FROM pr_fields_descriptor a "
   + "inner join pr_fields_starring b on a.id_fields_descriptor = b.fields_descriptor_id "
   + "where b.starring_id = '"+pos_starring_id+"' and a.theme_id='"+themes_ids[m]+"' order by form_rank";

このクエリを「;」で終了しないでください。

于 2012-10-27T10:30:09.400 に答える
0

クエリで配列型パラメータを渡さないでください。機能しない場合があります

int themes_id = themes_ids[m];

String stmtGetThemes = "SELECT * FROM pr_fields_descriptor a inner join pr_fields_starring b on a.id_fields_descriptor = b.fields_descriptor_id where b.starring_id = '"+pos_starring_id+"' AND a.theme_id = '"+themes_id+"' ORDER BY form_rank";

Cursor getThemesCursor1 = db.databaseQuery(stmtGetThemes);

if (getThemesCursor1 != null && getThemesCursor1.getCount() != 0){
//----
}
于 2012-10-27T10:29:49.143 に答える