0

属性 Name を持つ Course という名前の sqlite テーブルからデータを取得しようとしています。

ここでテーブルを作成します。

private static final String COURSE_ID = "CourseID";
private static final String COURSE_NAME = "Name";
private static final String COURSE_CODE = "CourseCode";
private static final String COURSE_ROWID = "_id";
private static final String COURSE_CREATE =
        "create table " +
"Course" + " ( " + 
COURSE_ROWID + " integer primary key autoincrement, " +
COURSE_ID + " integer not null," 
+ COURSE_NAME + " text not null, " +
COURSE_CODE + " text not null" + ");";

この関数でデータを選択しようとしています。

    public Cursor getCourseNames() throws SQLException {
    String[] values = {COURSE_NAME};
    mDb = mDbHelper.getReadableDatabase();
    return mDb.query("Course",values, COURSE_ROWID + "=" + "Name", null, null, null, null, null); 

}

次に、メインクラスで次のように実行します。

   public void buildCoursetoChapterList(){

Cursor cursor = dbHelper.getCourseNames();
SimpleCursorAdapter adapter = new SimpleCursorAdapter(MainActivity.this, android.R.layout.simple_list_item_1, cursor, null, null);

ListView listView = (ListView) findViewById(R.id.list);

listView.setAdapter(adapter);


}

データを取得してリストビューに入れたいだけですが、何が間違っているのでしょうか? 論理的なようSelect from Course WHERE _id = "Name"です。

ああ、エラーを忘れてしまいました... java.lang.IllegalArgumentException: 列 '_id' が存在しません

4

2 に答える 2

0

COURSE_ROWIDを「_id」にする

"create table " +
"Course" + " ( " + 
COURSE_ROWID + " AS _id," +
COURSE_ID + " integer not null," 
+ COURSE_NAME + " text not null, " +
COURSE_CODE + " text not null" + ");";

これは、「整数の主キーの自動インクリメント」として指定されていない行 ID に対して機能します (すべてのテーブルには行 ID 列があります)。

于 2013-05-17T20:00:08.863 に答える