Android查询SQLite的内容,cursor是空的怎么解决

我想要问一下,我这里是哪里有逻辑上的错误吗,报错说我的cursor是空的,返回不到内容:

img


这个是上面查询表的创建

img


或者说,这在搜索的时候遇到的cursor是空的情况,除了代码写错了,还有那些情况啊

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/338561
  • 这篇博客你也可以参考下:Android中SQLite的Cursor是不会为空的!!!!!!!!!!!!!!!!
  • 你还可以看下android参考手册中的 android SQLiteCursor 一个游标的实现,暴露了在一个 SQLiteDatabase上的查询结果。
  • 以下回答由chatgpt基于相关博客总结生成:

    我需要更多的信息才能确定问题所在。参考资料中并没有提供创建查询表的代码,也没有相关的查询语句。以下是我对可能导致cursor为空的一些情况的总结,希望对你有所帮助:

    1. 查询语句的语法错误。

    如果查询语句的语法错误,可能会导致cursor为空。你可以在查询语句中使用“SELECT *”语句,这会将表中的所有列选择出来。如果这个查询语句没有问题,那么问题可能出在其他地方。

    1. 查询的表格不存在。

    如果尝试查询一个不存在的表格,cursor可能为空。你需要确保表格的名称与查询语句中使用的名称一致。

    1. 数据库没有被正确地打开。

    如果数据库没有被正确地打开,cursor也可能为空。你需要确保你在查询语句中使用了正确的数据库名称和版本号。

    1. 查询结果集为空。

    有时,查询语句可能会没有返回任何结果,这会导致cursor为空。你可以添加一些调试代码来检查查询表中是否有数据。

    1. 其他错误。

    可能还有其他的问题导致cursor为空。你可以将查询语句发送到日志中以进行更深入的分析。

    以下是一个简单的代码片段,演示如何在Android中查询SQLite数据库并处理结果:

    String[] columns = {"name", "score"};
    String selection = "score > ?";
    String[] selectionArgs = {"50"};
    String orderBy = "score DESC";
    Cursor cursor = db.query("myTable", columns, selection, selectionArgs, null, null, orderBy);
    if (cursor != null) {
        while (cursor.moveToNext()) {
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int score = cursor.getInt(cursor.getColumnIndex("score"));
            Log.d("TAG", "name: " + name + ", score: " + score);
        }
        cursor.close();
    }
    

sqlite 仅支持单线程的写入操作,你看看是不是其他地方调用数据库资源的时候没有正确关闭资源,不管是查询语句还是增删改都需要用完及时关闭资源,不然就是查到个空

没有查询到相关数据呗,是不是查询的SQL拼接有问题,还是其它的呢?