0

GUI を使用して、1650 レコードを含む DB を作成しました。

この DB にクエリを実行しようとしていますが、常に何も返されません。何かを取得しているかどうかを確認する簡単なgetrowcount()メソッドを作成しようとしましたが、常にゼロが返されます。誰かが何が起こっているのかを指摘するのを助けることができるなら、私はここで明らかな何かを見逃しているに違いありません.

私のメインではapp.java

    db = new DbHandler(this);
    String sIcao1 = "ROW COUNT = " + String.valueOf(db.getRowCount());

私の中でdbhandler.java

package com.jammo.mywidget4;

<snip - standard includes>

public class DbHandler extends SQLiteOpenHelper {

    private static SQLiteDatabase db;
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "airports";
    private static final String TABLE_AIRPORTS = "airports";

    public DbHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

        db = this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db = this.getWritableDatabase();
    }

    int getRowCount() {

        int nCount = -1;
        //SQLiteDatabase db = this.getReadableDatabase();
        Cursor cur = db.rawQuery("SELECT * FROM airports", null);
        nCount = cur.getCount();
        if (cur != null) {
            //cur.moveToFirst();                      
            //nCount = cur.getInt(0);
            //if (cur.getInt (0) == 0) {              

            //}
        }

        return nCount;
    }

}

GUI(SQLite DBブラウザ)で私は簡単なことをしています

select * from airports

...そして、行数全体を取得しています。Java をデバッグすると、カーソルは何も返しません。

また、GUI で作成した DB は にありmyapp/assets/airports.dbます。

何か案は?

4

1 に答える 1

0

.dbDATABASE_NAMEに を含める必要があると思います。

これを変更してみてください:

private static final String DATABASE_NAME = "airports";

これに:

private static final String DATABASE_NAME = "airports.db";

編集:

実際、この変更を行っても、うまくいかないと思います。SQLiteOpenHelper は、db ファイルが内部にあることを期待しています/data/data/your.package/databases/。そのため、変更されていない SQLiteOpenHelper で動作させたい場合は、アセットからそこにコピーする必要があると思います。

コピーする方法については、こちらを参照してください: Android: Accessing assets folder sqlite database file with .sqlite extension

于 2013-03-04T19:01:54.880 に答える