Android中对于sqlite3中的数据查询?

发布于 2022-09-01 22:33:07 字数 1459 浏览 24 评论 0

目的读取sqlite3的数据。
数据

//select * from book;
1|Dan Brown|10.99|454|The Da vinvi Code
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    Cursor cursor = db.query("book",null,null,null,null,null,null);
    if(cursor.moveToFirst()){
        do{
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String author = cursor.getString(cursor.getColumnIndex("author"));
            int pages = cursor.getInt(cursor.getColumnIndex("page"));
            double price = cursor.getDouble(cursor.getColumnIndex("price"))
                Log.d("MainActivity","book name is" +name);
                Log.d("MainActivity","book author is"+author);
                Log.d("MainActivity","book pages is"+pages);
                Log.d("MainActivity","book price is"+price);
            }while (cursor.moveToNext());
            }

我自己调试发现是int pages = cursor.getInt(cursor.getColumnIndex("page"));发生了错误,错误显示信息

java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

建表


    create table book
    (
                id integer primary key autoincrement,
                author text,
                price real,
                pages integer,
                name text.
    )

我没有学过数据库除了语法可能出错其他不会有问题。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

惟欲睡 2022-09-08 22:33:07

你的sql语句里:

pages integer,

但是你读取的时候是写

cursor.getColumnIndex("page")

你应该改成

cursor.getColumnIndex("pages")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文