Android 如何从SQLite检索数据?

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

我正在处理一个sqlite数据库,我确信我已经正确地插入了sqlite。 现在我使用游标从sqlite获取数据,但当我将数据设置为Texview时,我的应用程序崩溃。这是我的桌子: 这是我的数据库代码:

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;