将所有返回的数据从sqlite设置为textview

时间:2018-12-05 17:04:33

标签: android sqlite

我想将表格中的随机数据设置为单个textview。我能够从sqlite获取随机数据,但是我不能将其设置为textview。也许我不应该使用setText来放置它。 “生成”功能每次应从该表中获取随机数据。

-主班-

我在这里遇到问题(属于上述课程)

private void generatecompliment() {
    Cursor cursor = mydb.generatecompliments();
    cursor.moveToFirst();
    String[] compliments1 = new String[cursor.getCount()];
    //cursor.moveToNext();
    shwtxt.setText(cursor.getString(1));

}}

-databasehelper类-

    public Cursor generatecompliments () {
        SQLiteDatabase sqLiteDatabase2 = getReadableDatabase();
        String sql ="SELECT * FROM " + TABLE_NAME2 + "ORDER BY RANDOM() LIMIT 1";
        return sqLiteDatabase2.rawQuery(sql, null);
    } 
}

注意:我有一个第三类,它使用另一个表,但由于工作正常,所以未将其放在此处。

感谢帮助。

1 个答案:

答案 0 :(得分:0)

您有两个选择

我相信您会想要这样的东西:-

private void generatecompliment() {
    boolean done_first_column = false;
    StringBuilder sb = new StringBuilder();
    Cursor cursor = mydb.generatecompliments();
    if (cursor.moveToFirst()) {
        for (String column_name; cursor.getColumnNames) {
            if (done_first_column) {
                sb.append(" "); //<<<<<<<<<< separator between column data
            }
            sb.append(cursor.getString(csr.getColumnIndex(column_name));
            done_first_column = true;
        }
    }
    cursor.close();
    shwtxt.setText(sb.toString());   
}

或者

private void generatecompliment() {
    StringBuilder sb = new StringBuilder();
    Cursor cursor = mydb.generatecompliments();
    if (cursor.moveToFirst()) {
        for (int i =0; i < cursor.getColumnCount(); i++) {
            if (i > 0) {
                sb.append(" "); //<<<<<<<<<< separator between column data
            }
            sb.append(cursor.getString(i);
        }
    }
    cursor.close();
    shwtxt.setText(sb.toString());
}

区别在于,第一个使用Cursor getColumnNames方法获取列名的String数组,而第二个使用Cursor getColumnCount方法获取列数。

  • 这假定通过说 所有返回的数据 ,您希望将所有列中的数据串联起来。
  • 这还假设您需要一个空格,将数据与每一列分开。
  • 还假设已正确实例化 shwtxt
  • 以上代码为原则代码,尚未经过测试或运行,因此可能会导致一些小错误。