Hy Guys,我是Android初学者。我需要你的帮助。我想将数据插入sqlite tblorder和orderdtl的2个表中。在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);
} 我非常感谢你给予的任何帮助。谢谢你。
答案 0 :(得分:1)
查询与任何行都不匹配。检查moveToFirst()
的结果以查看操作是否成功,然后才访问游标数据。
示例:
order neworder = null;
if (cursor.moveToFirst()) {
order neworder = cursorToorder(cursor);
}
cursor.close();
return neworder;
从insertId
获得的insert()
是该行的sqlite行ID。它可能与ORDER_ID
不一样。要使列成为rowid的别名,请将其声明为INTEGER PRIMARY KEY
。
答案 1 :(得分:1)
我在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));
DatabaseHandler应该公开所有列名,因为getentry方法需要列名。
编辑:在下面的评论中添加问题的答案。 在调用db.query之后,你应该通过调用Cursor.isAfterLast()来检查你是否得到了什么。如果为true,则select返回空结果集。 在您的示例中,您将获得一个空结果集,因为代码使用" Ravi"作为团队名称,然后要求一个名为" Ravirrrr"的团队。