1

データベースでクエリを実行しようとしています。データベースはアプリで作成されていません。外部で作成し、このチュートリアルの説明に従って使用しています。しかし、列_idに関連するエラーがあります。クラス DatabaseHelper には、次のコードがあります。

public Cursor Search(Context context,String search){
        SQLiteDatabase db= getReadableDatabase();
        String cursorFactory = "SELECT * FROM words WHERE eng || ' ' || rus LIKE ?";
        Cursor cursor = db.rawQuery(cursorFactory, new String[]{"%" + search + "%"});
        return cursor;
                }

アクティビティで、私が書いたコードは次のとおりです。

 public void search(View v){
            text2search= searchText.getText().toString();   
            cursor= myDbHelper.Search(mContext, text2search);
            adapter =new SimpleCursorAdapter(getBaseContext(),R.layout.list_item, 
                        cursor,
                        new String[]{"rusword","engword","kind"},
                        new int[]{R.id.rusWord,R.id.engWord,R.id.knd});
            wordsList.setAdapter(adapter);              
        }  

そして、_id:(LogCat 内) に関連するエラーが発生します。

09-03 14:12:38.018: E/AndroidRuntime(16581): 原因: java.lang.IllegalArgumentException: 列 '_id' が存在しません

しかし、私が作成したデータベースには「_id」列があります:(画像をアップロードできないので、リンクはこちらhttps://www.dropbox.com/s/9a2ol1acrnxmzob/sql-db-rusWjpg.png )

ありがとうございました!

4

1 に答える 1

1

だから問題はそれほどトリッキーではありません。一部のアダプターは、 column _idSimpleCursorAdapterを選択する必要があるものを選択しようとするときに、このアダプターが必要になる場合があります。だからこれを試してください:

new String[] {"_id", "rusword", "engword", "kind"}
String cursorFactory = "SELECT _id, [next columns] FROM ...;

これで動作するはずです。

同様の質問は次のとおりです。

注: _id列を使用したくない場合は、次の簡単なトリックを使用できます。

SELECT keyID AS _id FROM TableName
于 2012-09-03T09:09:46.603 に答える