Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常

异常: Android.Database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 10

此错误是数据返回到ICursor无法确定获取列的索引,那么需要加上一下代码即可。

if (i == 0)             //确定游标位置
{
    ic.MoveToFirst();
}
else
{
    ic.MoveToNext();
}

完整代码Demo:

/// <summary>
/// 查询数据
/// </summary>
void QueryData()
{
    ICursor ic =  Localhost_DataBase.Query("tb_person", null, null, null, null, null, null);
    for (int i = 0; i < ic.Count; i++)
    {
        if (i == 0)             //确定游标位置
        {
            ic.MoveToFirst();
        }
        else
        {
            ic.MoveToNext();
        }

        person = new Person();
        person.Id = ic.GetString(ic.GetColumnIndex("Id"));
        person.Name = ic.GetString(ic.GetColumnIndex("name"));
        person.Age = ic.GetString(ic.GetColumnIndex("age"));
        person.Sex= ic.GetString(ic.GetColumnIndex("sex"));
        person.IdCard = ic.GetString(ic.GetColumnIndex("idcard"));
        list.Add(person);
    }
    lv_Person.Adapter = new ListViewAdapter(this, list);
}

原文地址:https://www.cnblogs.com/swjian/p/9360603.html

时间: 2024-09-27 21:52:17

Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常的相关文章

关于E/AndroidRuntime(32023): Caused by: android.database.CursorIndexOutOfBoundsException: Index 3 requested, with a size of 3的问题

发生错误的代码: /** * 获取下载列表中的视频名称, * 若果存在添加的视频与它相同* 则提示用户该视频已经添加到下载列表* 备注:添加的视频超过3时,程序会崩溃* 抛出错误: android.database.CursorIndexOutOfBoundsException: Index 3 requested, with a size of 3 * @return *//* public String getDownloadingVideoname(){ SQLiteDatabase db

Xamarin.Android 使用 SQLite 出现 Couldn&#39;t read row 0, col -1 from CursorWindow. 异常

异常:Java.Lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it. 出现该问题一般分为两种情况: 1.请求的字段不在表中,可能是大小写没写对.(我就是Id写成id出现的错误) 2.字段类型不匹配. Xamarin.Android 使用 SQLit

Xamarin.Android之SQLite.NET ORM

一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之ContentProvider>的学习,我们已经掌握了如何使用特定于该平台的数据库操作.但是这样却和Xamarin所宣称的跨平台相违背了,因为这样我们就需要针对不同的平台编写不同的代码,而本章将使用Github上的开源项目SQLite.NET去解决这个问题,从而可以实现跨平台,减少代码的重复. 关于该开源项目请点我 二.准备工作 因为这个库很大,而我们只需要其中的一

Android android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1

Android中数据库处理使用cursor时,游标不是放在为0的下标,而是放在为-1的下标处开始的. 也就是说返回给cursor查询结果时,不能够马上从cursor中提取值. 下面的代码会返回错误 User u = null; SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from user where id = ?", new String[] { i

Xamarin.Android开发实践(十三)

Xamarin.Android之SQLite.NET ORM 一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之ContentProvider>的 学习,我们已经掌握了如何使用特定于该平台的数据库操作.但是这样却和Xamarin所宣称的跨平台相违背了,因为这样我们就需要针对不同的平台编写不同 的代码,而本章将使用Github上的开源项目SQLite.NET去解决这个问题,从而可以实现跨平台,减少代码的重复. 关于该

Xamarin.Android开发实践(十四)

Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文中的适配器的主要内容就是将原始的数据转换成了能够供列表控件显示的项). 二.简介适配器 在开始之前我们需要先了解下适配器,首先是提供给我们使用的适配器之间的关系: 下面我们将上面的适配器进行简单的介绍: BaseAdapter:顾名思义,就是所以适配器的基类,但是我们不能将其实例化,因为它是一个虚类

Xamarin.Android之ListView和Adapter

一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文中的适配器的主要内容就是将原始的数据转换成了能够供列表控件显示的项). 二.简介适配器 在开始之前我们需要先了解下适配器,首先是提供给我们使用的适配器之间的关系: 下面我们将上面的适配器进行简单的介绍: BaseAdapter:顾名思义,就是所以适配器的基类,但是我们不能将其实例化,因为它是一个虚类,一般我们都是继承该类并实现其中的方法,形成形成自定义的列表(大多

Android中SQLite数据库小计

2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for the Enterprise>.学习目标: 学习Android对SQL的支持. 理解在Java中使用SQL——通过SQLiteDatabase类. 创建数据库——SQLiteOpenHelper类. 理解loaders.cursors和adapters. 为了在程序中使用本地的,结构化的数据,需要完成

xamarin.Android SQLite存储

在可移植类库 新建: using SQLite.Net.Interop; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CommonLib { /// <summary> /// 数据存储环境 /// </summary> public interface IDataStorag