0

Firefox SQLite Manager を使用して SQLite データベースを作成し、データを取り込みました。.sqlite ファイルを Android プロジェクトの assets フォルダーにコピーしました。

私の目的は、このレコードを使用してスピナーを作成することです。データベースにクエリを実行すると、カーソルには列が表示されますが、レコードは表示されません。

DatabaseHandlerのクラスは、 、およびSQLiteOpenHelperのメソッドを拡張して含みます。onCreateonUpgradegetAllOffices

public List<String> getAllOffices(){ 
    List<String> offices = new ArrayList<String>(); 

    // Select All Query 
    String selectQuery = "SELECT OfficeId as _id, OfficeName FROM " + TABLE_OFFICE; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
        do { 
            offices.add(cursor.getString(1)); 
        } while (cursor.moveToNext()); 
    } 

    // closing connection 
    cursor.close(); 
    db.close(); 

    // returning offices 
    return offices; 
}   

レコードが返されない理由についてのアイデアをいただければ幸いです。

4

2 に答える 2

1

これを試して:

public List<String> getAllOffices(){ 
    List<String> offices = new ArrayList<String>(); 

    // Select All Query 
    String selectQuery = "SELECT OfficeId as _id, OfficeName FROM " + TABLE_OFFICE; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
        do { 
            offices.add(cursor.getString(cursor.getColumnIndex("_id"))); 
        } while (cursor.moveToNext()); 
    } 

    // closing connection 
    cursor.close(); 
    db.close(); 

    // returning offices 
    return offices; 
}   

基本的に、正しい列インデックスを使用していることを確認するだけです。それ以外の場合は、eclipse を使用している場合は、cellobject プラグインを試してデータベースを参照し、テーブルが期待どおりに入力されていることを確認してください: http://marketplace.eclipse.org/content/cellobject-sqlite-xml-browser#.UWOU5RaBD3g

于 2013-04-09T03:18:19.890 に答える
0

これを試してみてください。あなたに役立つかもしれません。

public List<String> getAllOffices(){ 
    List<String> offices = new ArrayList<String>(); 

    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_OFFICE; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    System.out.println("CURSOR SIZE:"+cursor.getCount())
    // looping through all rows and adding to list 
    if(cursor.getCount()!=0){
        if (cursor.moveToFirst()) { 
            do { 
                System.out.println(cursor.getString(c.getColumnIndex("as per your db column name"));
            } while (cursor.moveToNext()); 
        }
    }   

    // closing connection 
    cursor.close(); 
    db.close(); 

    // returning offices 
    return offices; 
} 

まず最初に、コンソールの出力を確認して、正しいかどうかを確認してから、office bean

于 2013-04-09T04:48:02.727 に答える