ContentProvider内でエラーを引き起こすメソッド
public static Cursor getSuggestions(String query) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
db.beginTransaction();
try {
String selection = Formula.FORMULA_NAME + " LIKE %?%";
String[] selectionArgs = { query + "*" };
Cursor cursor = dbHelper.getReadableDatabase().query(
FORMULA_TABLE_NAME,
new String[] { BaseColumns._ID,
SearchManager.SUGGEST_COLUMN_TEXT_1,
BaseColumns._ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID
},
selection,
selectionArgs, null, null, null);
db.setTransactionSuccessful();
return cursor;
} catch (SQLiteException e) {
} finally {
db.endTransaction();
}
throw new SQLException("Failed to begin transaction");
}
データベースの作成:
db.execSQL("CREATE TABLE " + FORMULA_TABLE_NAME + " (" +
BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
SearchManager.SUGGEST_COLUMN_TEXT_1 + " TEXT," +
Formula.CATEGORY + " TEXT" +
");");
使用される定数:
public static final String FORMULA_NAME = SearchManager.SUGGEST_COLUMN_TEXT_1;
public static final String CATEGORY = "category";
問題は、私のメソッドでは、エラーがスローされるためにトランザクションが失敗することです。throw new SQLException("Failed to begin transaction");
私がやろうとしているのは、検索の一部としてデータベースを検索することです。ユーザーが検索ボックスをアクティブにすると、このメソッドが名前に基づいて疑わしいアイテムを含むカーソルを返すように設定しました。デバッグを通じて、問題はコンテンツプロバイダー内の検索方法にあると推測しました。解決策や考えはありますか?