0

我使用 GUI 创建了一个包含 1650 条记录的数据库。

我正在尝试查询这个数据库,但它总是什么都不返回。我试过写一个简单的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 创建的数据库位于myapp/assets/airports.db.

有任何想法吗?

4

1 回答 1

0

我认为您需要.db在 DATABASE_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 回答