-1

この機能を実行する DB ヘルパーがあります。

public Cursor getCourseNames() throws SQLException {
    mDb = mDbHelper.getReadableDatabase();

    return mDb.query("Course",null, COURSE_ROWID, null, null, null, null, null); 
}

プル元のテーブルは次のようになります。

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" + ");";

私の主な活動では、これを試して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);
}

私の問題が何であるか誰にも分かりますか?以前にデータベースにデータを入れました:

if(dbHelper.checkCourseForData() !=null)
{
    setContentView(R.layout.classlist);
}
else
{
    dbHelper.addFirstClassToDb(course_code, name, course_id);
    Log.d+i("Course added to DB", course_code + " " + name + " " + course_id);
}               

これを試してみましたが、まだ何もありません。コース内のすべての名前の値を選択したいと思います。手がかりはありません... 希望を失っています。

public Cursor checkCourseForData() throws SQLException {
    String[] values = {COURSE_NAME};
    Cursor mCursor = mDb.query("Course",values,COURSE_ROWID + "=" + "Name", null, null, null, null, null); 
    if (mCursor != null) { mCursor.moveToFirst(); } 

    return mCursor;

}
4

1 に答える 1

0

これのはず

public Cursor getCourseNames() throws SQLException {
    String[] values = {COURSE_NAME};
    mDb = mDbHelper.getReadableDatabase();

    return mDb.query("Course",values,COURSE_ROWID, null, null, null, null, null); 
}

説明 :

APIのメソッドは次のように定義されています

パブリック カーソル クエリ (文字列テーブル、文字列[] 列、文字列選択、文字列[] 選択引数、文字列 groupBy、文字列有、文字列 orderBy)

したがって、それに応じて文字列を渡す必要があります。

私の例を参照として使用してください。

    private String name;
private String Events_Table = "events";
private String[] Columns = {"_id", "Name", "Date", "Time_Slot", "Venue", "Details", "EHName", "EHNumber"} ;
private String WhereClause = Columns[1]+"=?" ;

    Cursor cursor = db.query(Events_Table, Columns, WhereClause, new String[] {name}, null, null, null);

これを読むことを検討してください

パラメーター

table クエリをコンパイルするテーブル名。

columns 返す列のリスト。null を渡すとすべての列が返されますが、使用されないストレージからのデータの読み取りを防ぐために推奨されません。

選択 SQL WHERE 句 (WHERE 自体を除く) としてフォーマットされた、返される行を宣言するフィルター。null を渡すと、指定されたテーブルのすべての行が返されます。

selectionArgs ?s を選択に含めることができます。これは、selectionArgs からの値で置き換えられ、選択に表示されます。値は文字列としてバインドされます。

groupBy 行をグループ化する方法を宣言するフィルターで、SQL GROUP BY 句としてフォーマットされます (GROUP BY 自体を除く)。null を渡すと、行はグループ化されません。フィルターを使用してカーソルに含める行グループを宣言します。行のグループ化が使用されている場合は、SQL HAVING 句としてフォーマットされます (HAVING 自体を除く)。null を渡すと、すべての行グループが含まれます。これは、行のグループ化が使用されていない場合に必要です。

orderBy 行を並べ替える方法。SQL ORDER BY 句としてフォーマットされます (ORDER BY 自体を除く)。null を渡すと、デフォルトの並べ替え順序が使用されますが、順序付けされていない場合があります。

于 2013-05-17T16:51:23.663 に答える