从数据库中查看下一条记录

时间:2011-12-09 22:07:25

标签: android sql database button record

我的应用程序中有两个按钮,一个用于next,一个用于prev。我希望下一个按钮获取我的数据库中的下一条记录并将其显示在我的视图中,并使用prev按钮获取上一条记录并将其显示在我的视图中。我如何拨打下一张或上一张唱片?我已经找了教程和东西,但没有找到任何。我有人有一个教程请与我分享。谢谢你的帮助。我希望我能提供一些代码,但我真的不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

我使用int从dbase中提取记录。

来自我的ContactView类

static long record = 1;

public void getData() {

    DBase db = new DBase(this);
    db.open();
    lastRecord = db.lRec();
    firstRecord = db.fRec();
    rRec = db.getRec(record);
    db.close();

}

然后我的查询来自我的Dbase类

public String[] getRec(long record) {

    record = ContactView.record;

    String[] columns = new String[] { KEY_ROWID, KEY_ONE, KEY_TWO,
            KEY_THREE, KEY_FOUR, KEY_FIVE, KEY_SIX };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "="
            + record, null, null, null, null);
    if (c != null && c.moveToFirst()) {
        String rRec = c.getString(0);
        String rOne = c.getString(1);
        String rTwo = c.getString(2);
        String rThree = c.getString(3);
        String rFour = c.getString(4);
        String rFive = c.getString(5);
        String rSix = c.getString(6);

        String[] rData = { rRec, rOne, rTwo, rThree, rFour,
                rFive, rSix };

        return rData;

    }
    return null;
}

接下来的几个来自我的ContactView类

我的按钮

@Override
public void onClick(View arg0) {

    switch (arg0.getId()) {
    case R.id.bSQLvPrev:

        recordMinus();
        display();

        break;
    case R.id.bSQLvNext:

        recordPlus();
        display();

        break;

    }
}

以及他们调用的方法

public void display() {

    etSQLvRec.setText(rRec[0]);
    etSQLvOne.setText(rRec[1]);
    etSQLvTwo.setText(rRec[2]);
    etSQLvThree.setText(rRec[3]);
    etSQLvFour.setText(rRec[4]);
    etSQLvFive.setText(rRec[5]);
    etSQLvSix.setText(rRec[6]);
}

public void recordPlus() {
        record++;

    }

public void recordMinus() {
        record--;
    }

这将根据“记录”变量从数据库中获取记录,按钮递增或减少它,它也会跳过任何“空”记录。

编辑好了,我改变了一些东西,因为我持续使用了我的数据库,所以使用下一个recordPlus()和recordMinus()代码

public void recordPlus() {
    if (record < lastRecord) {
        record++;
    } else {
        record = firstRecord;
    }
    getData();

    do {
        if (record < lastRecord) {
            record++;
        } else {
            record = firstRecord;
        }
        getData();
    } while (rRec == null);
}

public void recordMinus() {
    if (record == 1) {
        record = lastRecord;
    } else {
        record--;
    }
    getData();

    do {
        if (record == 1) {
            record = lastRecord;
        } else {
            record--;
        }
        getData();
    } while (rRec == null);
}

你需要我的fRec()和lRec()来查找数据库中的第一个和最后一个记录

public long fRec() {

    Cursor c = ourDatabase.query(DATABASE_TABLE, new String[] { "min(" + 
    KEY_ROWID
            + ")" }, null, null, null, null, null);
    c.moveToFirst();
    long rowID = c.getInt(0);

    return rowID;
}

}

public long lRec() {

    long lastRec = 0;
    String query = "SELECT ROWID from Table order by ROWID DESC limit 1";
    Cursor c = ourDatabase.rawQuery(query, null);
    if (c != null && c.moveToFirst()) {
        lastRec = c.getLong(0);
    }
    return lastRec;
}