При получении данных из базы данных, получая только первый индекс строки, я хочу, чтобы все данные из каждой строки - PullRequest
0 голосов
/ 03 октября 2019

Я новичок в Android и Java ... хочу получить все данные из каждой строки в sqlite.

public Cursor fetch() {
        dh = this.getReadableDatabase();
        Cursor cursor = this.dh.query(TABLE_INVOICE, new String[]{ITEM_NAME, ITEM_PRICE, QTY, ITEM_TAX, BILL_NO, DATE, CUST_NAME, CUST_ADDR, INVOICE_TOT, GRAND_TOT, TIME}, null, null, null, null, null);
        if (cursor != null) {
            cursor.moveToFirst();
        }
    return cursor;
}

выборка данных:

Cursor cursor = datahandler.fetch();
//                        String response = datahandler.getInvoice(itemName,invoice,mprice,billno,mdate,qty);
        ITEM_NAME = cursor.getString(0).trim();
        ITEM_PRICE = cursor.getString(1).trim();
        QTY = cursor.getString(2).trim();
        ITEM_TAX = cursor.getString(3).trim();
        BILL_NO = cursor.getString(4).trim();
        DATE = cursor.getString(5).trim();
        CUST_NAME = cursor.getString(6).trim();
        CUST_ADDR = cursor.getString(7).trim();
        INVOICE_TOT = cursor.getString(8).trim();
        GRAND_TOT = cursor.getString(9).trim();
        TIME = cursor.getString(10).trim();

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Вернуть все элементы в списке из базы данных.

public List<Records> fetch() {
    List<Records> records = new ArrayList<Records>();
    dh = this.getReadableDatabase();
    Cursor cursor = this.dh.query(TABLE_INVOICE, new String[]{ITEM_NAME, ITEM_PRICE, QTY, ITEM_TAX, BILL_NO, DATE, CUST_NAME, CUST_ADDR, INVOICE_TOT, GRAND_TOT, TIME}, null, null, null, null, null);
    if ( cursor.moveToFirst()) {
        do {
            ITEM_NAME = cursor.getString(0).trim();
            ITEM_PRICE = cursor.getString(1).trim();
            QTY = cursor.getString(2).trim();
            ITEM_TAX = cursor.getString(3).trim();

            records.add(new Records(ITEM_NAME,ITEM_PRICE,QTY,ITEM_TAX)); 
        } while (cursor.moveToNext());
    }
    return records;
}

, а затем List<Records> records = db.fetch(); просмотреть список записей

1 голос
/ 03 октября 2019

Повторно вызывайте cursor.moveToNext(), пока не вернется false, извлекая данные между ними.

Cursor cursor = datahandler.fetch();

do {
    // extract data from cursor for current row
} while (cursor.moveToNext());

Для защиты от пустого Cursor вам также следует вызвать - и проверить возвращаемое значениеот - moveToFirst(). Вы вызываете moveToFirst(), когда получаете Cursor, но никогда не проверяете результат.

if (cursor.moveToFirst()) {
    do {
        // extract data from cursor for current row
    } while (cursor.moveToNext());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...