错误:CursorIndexoutofBoundSexception:请求索引0,大小为0



大家,我是初学者Android开发人员。我需要你的帮助。我想将数据插入SQLite Tblorder的2个表和OrderDTL。在OrderDTL上,我必须从ListView插入多个项目的数据。我尝试烤我想插入的所有变量。他们的全部出现。但是当我尝试保存它时。我得到这些错误。这是我的dbdatasource.java

public order createorder(String orderid, String notes, long outletid) {
    ContentValues values = new ContentValues();
    values.put(DBHelper.ORDER_ID, orderid); // inserting a string
    values.put(DBHelper.NOTES, notes); // inserting an int
    values.put(DBHelper.OUTLET_ID, outletid); // inserting an int
    long insertId = database.insert(DBHelper.TABLE_ORDER, null,
            values);
    Cursor cursor = database.query(DBHelper.TABLE_ORDER,
            allorder, DBHelper.ORDER_ID + " = " + insertId, null,
            null, null, null);
        cursor.moveToFirst();
        order neworder = cursorToorder(cursor);
        cursor.close();
        return neworder;}
 private order cursorToorder(Cursor cursor) {
    order order = new order();
    order.setorderid(cursor.getString(cursor.getColumnIndex(DBHelper.ORDER_ID)));
    order.setorderdate(cursor.getString(cursor.getColumnIndex(DBHelper.ORDER_DATE)));
    order.setnotes(cursor.getString(cursor.getColumnIndex(DBHelper.NOTES)));
    order.setoutletid(cursor.getLong(cursor.getColumnIndex(DBHelper.OUTLET_ID)));
    return order;
    }

错误请参阅此代码

Cursor cursor = database.query(DBHelper.TABLE_ORDER,
            allorder, DBHelper.ORDER_ID + " = " + insertId, null,
            null, null, null);

和此代码

order.setorderid(cursor.getString(cursor.getColumnIndex(DBHelper.ORDER_ID)));

orderid是字符串,我尝试从yyyymmddhhmmss.

    private String orderid(){
    SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyyMMddHHmmss", Locale.getDefault());
    Date date = new Date();
    return dateFormat.format(date);

}我会非常感谢您提供的任何帮助。

查询不匹配任何行。检查moveToFirst()的结果以查看操作是否成功,然后访问光标数据。

示例:

order neworder = null;
if (cursor.moveToFirst()) {
    order neworder = cursorToorder(cursor);
}
cursor.close();
return neworder;

您从insert()获得的insertId是该行的SQLite行ID。它可能与ORDER_ID不同。要使列成为RowID的别名,请将其声明为INTEGER PRIMARY KEY

我在logcat中看到的错误无关_player_8,而是关于未知列" key_team_name"

问题在您的活动中,最后一条线:

String EntryA =String.valueOf( db.getentry("Ravirrrr", "KEY_Team_Name"));

应该是:

String EntryA =String.valueOf( db.getentry("Ravirrrr", DatabaseHandler.KEY_Team_Name));

和数据库Handler应该公开所有列名称,因为Getentry方法需要一个列名。

编辑:在下面的评论中添加答案。调用DB.Query后,您应该通过调用Cursor.isafterLast()检查是否获得了东西。如果为true,则选择返回一个空结果集。在您的示例中,您将获得一个空的结果集,因为代码以" Ravi"为团队名称创建条目,然后要求一个名为" Ravirrrr"的团队。

最新更新