Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android sqlite无法';t从光标窗口读取第0行第1列_Android_Sqlite_Android Cursor - Fatal编程技术网

Android sqlite无法';t从光标窗口读取第0行第1列

Android sqlite无法';t从光标窗口读取第0行第1列,android,sqlite,android-cursor,Android,Sqlite,Android Cursor,我试图从表中获取一个值 cursor=db.rawQuery("select value from '" + tableName + "' where key= '" + name + "' ",null); if (cursor.getCount()>0){ if (cursor.moveToFirst()){ String value= cursor.getString(cursor.getColumnIndex("value"));

我试图从表中获取一个值

 cursor=db.rawQuery("select value from '" + tableName + "' where key= '" + name + "' ",null);

if (cursor.getCount()>0){
        if (cursor.moveToFirst()){
                String value= cursor.getString(cursor.getColumnIndex("value"));
                return value;
        }
        cursor.close();

    }
我得到一个例外:

Couldn't read row 0, col -1 from Cursor Window.Make sure cursor is initialised correctly before accessing data from it.
当我使用:

        cursor.getString(0);
我能够得到我需要的价值

如果我使用

       cursor.getString(cursor.getColumnIndex("value"));
我有个例外

以下是我的表的快照:

您创建的表必须有一个名为_id的列。只有添加列索引为“_id”的列,该表才能工作


如果没有任何列索引为“\u id”的列。从设置->应用程序管理器显式卸载应用程序。并在添加所需列后重新运行应用程序。

SQL中的表名和列名区分大小写。由于您的列名为“VALUE”,您需要获取ColumnIndex(“VALUE”)

您的变量tableName为null.sry…我发布了错误的错误…我更新了问题@gabechanit是命名为VALUE还是VALUE?SQL对表名和列名是区分大小写的,即使它对关键字不区分大小写。总的来说,不要使用字符串附加来查询这样的值。将变量附加到SQL文本会导致SQL注入错误。改为使用绑定变量。然后使用getColumnIndex(“值”);SQLite会自动添加一个id列。另外,这不是一个要求,您可以创建一个没有返回值的表。顺便说一句,如果您不打算检查返回值,您也可以使用该方法——如果失败,它会给您提供更多有用的错误消息。值得一提的是,在SQL中,名称不区分大小写,但在
Cursor
API中,名称是区分大小写的。其实现是特定的。有些数据库区分大小写,有些则不区分大小写。SQLite是。在编写通用SQL代码时,更安全的假设是这样的。