程序运行时出现以下错误提示:
10-30 09:00:35.077: E/AndroidRuntime(9930): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
造成出现该错误的代码如下:
cursor = db.SelectDB(sql, new String[] { Integer.toString(id) }); //
if (cursor.getInt(cursor.getColumnIndex(DbTableColumName.isEnable)) == 1)
{
/* 保存状态 */
inputName = cursor.getString(cursor
.getColumnIndex(DbTableColumName.name));
machineStatus.setInputType(inputName);
/* 发送切换后组号发到高清板 */
list.add((byte) i);
commandPack.inputCtrCommandPack(Constant.HIFIADDR, (byte) 0xE0,
list);
/* 发送到OSD上显示 */
listOsdSrc.add(inputName);
osdDisplayInfo(listOsdSrc);
break;
}
造成该错误的原因:
对数据的查询结果cursor进行操作时,必须要先执行cursor.moveToFirst(),却表cursor位于第一个数据行。正确的代码如下:
<span style="white-space:pre"> </span>cursor = db.SelectDB(sql, new String[] { Integer.toString(id) }); //
if (cursor.moveToFirst())
{
if (cursor.getInt(cursor.getColumnIndex(DbTableColumName.isEnable)) == 1)
{
/* 保存状态 */
inputName = cursor.getString(cursor
.getColumnIndex(DbTableColumName.name));
machineStatus.setInputType(inputName);
/* 发送切换后组号发到高清板 */
list.add((byte) i);
commandPack.inputCtrCommandPack(Constant.HIFIADDR, (byte) 0xE0,
list);
/* 发送到OSD上显示 */
listOsdSrc.add(inputName);
osdDisplayInfo(listOsdSrc);
break;
}
}