Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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
Java 光标在android应用程序中似乎不起作用_Java_Android_Cursor - Fatal编程技术网

Java 光标在android应用程序中似乎不起作用

Java 光标在android应用程序中似乎不起作用,java,android,cursor,Java,Android,Cursor,我的光标似乎不起作用。谁能帮帮我吗? 实际上这里的for循环不起作用。未显示日志。 这是我的代码: public String getAFact(int rowNumber) { SQLiteDatabase db = this.getReadableDatabase(); Cursor c = db.rawQuery("select mfacts from mfacts where osl_number=" + rowNumber + ";", null

我的光标似乎不起作用。谁能帮帮我吗? 实际上这里的for循环不起作用。未显示日志。 这是我的代码:

public String getAFact(int rowNumber)
    {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery("select mfacts from mfacts where osl_number=" + rowNumber + ";", null);
        for(c.moveToFirst();!c.isAfterLast();c.moveToNext()) {
            rowData = c.getString(c.getColumnIndex(KEY_NAME));
            Log.i("log_tag", "cursor isn't f**ked up..."+rowData);
        }
        c.close();
        db.close();
        return rowData;
    }
}
但无论如何,下面的代码工作正常,并且正确显示了记录数

public int countRowsInDb()
    {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery("select * from mfacts",null);
        Log.i("Number of Records"," :: "+c.getCount());
        db.close();
        int c_getCount = c.getCount(); 
        c.close();
        return c_getCount;
    }

我认为你的SQL语句是错的。看起来您正在尝试获取整行数据,请重试

从mfacts中选择*,其中osl_编号=+行编号+

作为您的查询。

您可以尝试这样做

  if (cursor.moveToFirst())
            {                       
                for (int i = 0; i < cursor.getCount(); i++)
                {
                    //Your logic goes here//
                    cursor.moveToNext();
//                   
                }           
            }
            cursor.close();
            db.close();

表中是否有osl_number等于rowname的行?是的。但是有什么地方我可以查一下吗?为了确保这一点,在Eclipse中,您可以使用“文件资源管理器”窗口将数据库拉到硬盘上,然后手动进行检查。但是如果你没有看到提到索引-1的错误。。。如果在emulator中运行程序,则可以使用文件资源管理器拉出数据库文件/data/data/package name/folder包含应用程序使用的数据库和其他文件。您只需将sqlite插件添加到Mozilla Firefox并使用它打开数据库。尝试过,但仍然没有成功!:/但这就是我在for循环中所做的,对吗?我看不出有什么不同!我在我的项目中使用这个逻辑。它工作得很好。然后你必须检查其他一些。数据库中是否有数据?。logcat是否显示任何错误??