Android:SQLite,插入和查询的小问题

发布于 2024-11-02 03:06:29 字数 1588 浏览 0 评论 0原文

我正在开发我的第一个应用程序,其中包含一个 SQLite 数据库,其中包含表 ANIMAL,其中包含列 _idanimal_nameanimal_bio.

在 ListView 中向用户显示动物名称;选择一种动物将把他/她带到一个页面,他/她可以在其中查看动物简介。

我遇到的问题是:

当我将每只动物的生物添加到数据库时 - 没有错误。
但是,运行该应用程序会导致 ListView(之前正常工作)显示空白屏幕。

我的插入代码:

public long populateDB(){       
    ContentValues initialValues = new ContentValues();
    long[] rowIds = new long[animalName.length];

    // Populate the animal table
    for(int i = 0; i < animalName.length; i++){
        initialValues.put(KEY_ANIMALNAME, animalName[i]);
        initialValues.put(KEY_BIOGRAPHY, bio[i]);
        rowIds[i] = qmDB.insert(ANIMAL_TABLE, null, initialValues);
    }
    return rowIds[0];
}

以及创建数据库语句

private static final String DATABASE_CREATE = 
            "create table " + ANIMAL_TABLE +
            " (_id integer primary key autoincrement, " + 
            "animal_name text not null, " +
            "biography text not null);"; 

我看不出这段代码有什么问题,所以如果有人有任何建议,我将非常感激。

编辑:检索动物代码

public Cursor retrieveAnnimals(){
    return qmDB.query(ANIMAL_TABLE, new String[] {
            KEY_ROWID,
            KEY_ANIMALNAME,
            },
            null,
            null,
            null,
            null,
            ORDER_BY_NAME);
}

从应用程序调用创建和插入,这发生在 ListActivity 中,称为 ListAnimals:

dbm = new MyDBManager();
dbm.open();
dbm.deleteTable();
dbm.populateTable();
myCursor = dbm.retrieveAnimals();

I am developing my first application which contains an SQLite database, containing table ANIMAL which has the columns _id, animal_name, animal_bio.

The user is presented with animal names in a ListView; selecting an animal will bring him/her to a page where he/she can view the animals bio.

The problem I'm having is:

When I add the bio of each animal to the DB - no errors.
However, running the app causes the ListView (previously working) to display a blank screen.

My Insertion code:

public long populateDB(){       
    ContentValues initialValues = new ContentValues();
    long[] rowIds = new long[animalName.length];

    // Populate the animal table
    for(int i = 0; i < animalName.length; i++){
        initialValues.put(KEY_ANIMALNAME, animalName[i]);
        initialValues.put(KEY_BIOGRAPHY, bio[i]);
        rowIds[i] = qmDB.insert(ANIMAL_TABLE, null, initialValues);
    }
    return rowIds[0];
}

And the create database statement

private static final String DATABASE_CREATE = 
            "create table " + ANIMAL_TABLE +
            " (_id integer primary key autoincrement, " + 
            "animal_name text not null, " +
            "biography text not null);"; 

I cannot see anything wrong with this code, so if anyone has any suggestions, I'd be very grateful.

EDIT: Retrieving animals code

public Cursor retrieveAnnimals(){
    return qmDB.query(ANIMAL_TABLE, new String[] {
            KEY_ROWID,
            KEY_ANIMALNAME,
            },
            null,
            null,
            null,
            null,
            ORDER_BY_NAME);
}

Calling the create and insert from application, this takes place in the ListActivity, called ListAnimals:

dbm = new MyDBManager();
dbm.open();
dbm.deleteTable();
dbm.populateTable();
myCursor = dbm.retrieveAnimals();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文