Android 如何从SQLite检索数据?
我正在处理一个sqlite数据库,我确信我已经正确地插入了sqlite。 现在我使用游标从sqlite获取数据,但当我将数据设置为Texview时,我的应用程序崩溃。这是我的桌子: 这是我的数据库代码:Android 如何从SQLite检索数据?,android,sqlite,android-fragments,android-sqlite,Android,Sqlite,Android Fragments,Android Sqlite,我正在处理一个sqlite数据库,我确信我已经正确地插入了sqlite。 现在我使用游标从sqlite获取数据,但当我将数据设置为Texview时,我的应用程序崩溃。这是我的桌子: 这是我的数据库代码: SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT * FROM " + PRODUCT_TABLE + " WHERE ID = 23"; Cursor cursor = db.rawQu
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT * FROM " + PRODUCT_TABLE + " WHERE ID = 23";
Cursor cursor = db.rawQuery(query,null);
return cursor;
这是我的光标代码:
Cursor cursor = dbHelper.getCheckOutProduct(Id);
if (cursor != null && cursor.getCount() > 0) {
do {
int proId = cursor.getInt(cursor.getColumnIndex("ID"));
int addressId = cursor.getInt(cursor.getColumnIndex("Price"));
int paymentTypeID = cursor.getInt(cursor.getColumnIndex("Quantity"));
int customerID = cursor.getInt(cursor.getColumnIndex("ProductID"));
Log.e("ProductId",String.valueOf(proId));
}while (cursor.moveToNext());
}
我哪里出错了
我想这是正确的查询,您将从游标检索的值存储在哪里?为了方便起见,您可以创建一个具有所需属性的模型,并逐个进行设置,然后返回如下列表:
Cursor cursor = dbHelper.getCheckOutProduct(Id);
List<Model> values = new ArrayList<>();
if (cursor != null && cursor.getCount() > 0) {
do {
int proId = cursor.getInt(cursor.getColumnIndex("ID"));
int addressId = cursor.getInt(cursor.getColumnIndex("Price"));
int paymentTypeID = cursor.getInt(cursor.getColumnIndex("Quantity"));
int customerID = cursor.getInt(cursor.getColumnIndex("ProductID"));
Model model = new Model();
model.setProdId(prodId);
//just like above line set other desired values.
values.add(model);
Log.e("ProductId",String.valueOf(proId));
}while (cursor.moveToNext());
}
return values;
Cursor Cursor=dbHelper.getCheckOutProduct(Id);
列表值=新的ArrayList();
if(cursor!=null&&cursor.getCount()>0){
做{
int proId=cursor.getInt(cursor.getColumnIndex(“ID”);
int addressId=cursor.getInt(cursor.getColumnIndex(“Price”);
int paymentTypeID=cursor.getInt(cursor.getColumnIndex(“数量”);
int customerID=cursor.getInt(cursor.getColumnIndex(“ProductID”);
模型=新模型();
model.setProdId(prodId);
//就像上面的行一样,设置其他所需的值。
添加(模型);
Log.e(“ProductId”,String.valueOf(proId));
}while(cursor.moveToNext());
}
返回值;
希望这有助于调试问题。发布您的日志。我已上载快照,在我的Exceptioned中单击此处以检查光标。getCount()可能与否重复,此代码与原始代码不同:
而(c.moveToNext()){…
可以工作,但可以{…
将不会@Kishan Singh,您需要检查从querycount返回的行数是否也大于0,然后需要调试列名
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT * FROM " + PRODUCT_TABLE + " where id = 23";
Cursor cursor = db.rawQuery(query,null);
return cursor;
Cursor cursor = dbHelper.getCheckOutProduct(Id);
List<Model> values = new ArrayList<>();
if (cursor != null && cursor.getCount() > 0) {
do {
int proId = cursor.getInt(cursor.getColumnIndex("ID"));
int addressId = cursor.getInt(cursor.getColumnIndex("Price"));
int paymentTypeID = cursor.getInt(cursor.getColumnIndex("Quantity"));
int customerID = cursor.getInt(cursor.getColumnIndex("ProductID"));
Model model = new Model();
model.setProdId(prodId);
//just like above line set other desired values.
values.add(model);
Log.e("ProductId",String.valueOf(proId));
}while (cursor.moveToNext());
}
return values;