Android SQL只返回一列

时间:2015-07-26 11:03:19

标签: java android sql

我有一个包含以下布局的SQL数据库:

SQL Table

该表名为messages,大约有5列。

我创建了一个Cursor,它应该使用这个来获取两列中的所有值:

public List<String> getContacts(SQLiteDatabase db) {
    List<String> List = new ArrayList<String>();
    // Select All Query
    String selectQuery = "SELECT `from`,`to` FROM messages";
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            List.add(cursor.getString(1));
        } while (cursor.moveToNext());
    }
    return List;
}

在这里我将值添加到ListView:

DatabaseHelper dbHelper = new DatabaseHelper(
            this.getApplicationContext());

    newDB = dbHelper.getWritableDatabase();

    List<String> all = dbHelper.getContacts(newDB);
    if (all.size() > 0) // check if list contains items.
    {

        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, all));

    } else {
        Toast.makeText(ConversationsList.this, "No items to display", 1000)
                .show();
    }

并且添加了值,但只有me这是非常奇怪的。我做错了什么?

编辑:通过改变它来解决它:

if (cursor.moveToFirst()) {
            do {
                List.add(cursor.getString(0));
                List.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }

要:

if (cursor.moveToFirst()) {
            do {
                List.add(cursor.getString(0));
                List.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }

1 个答案:

答案 0 :(得分:0)

您的List<String> List

do {
    List.add(cursor.getString(1));
    } while (cursor.moveToNext());  

造成了这个问题。

如果您无法更改列表类型,

do {
     List.add(
            cursor.getString(1) +","
            cursor.getString(1) +","
            ...
            +cursor.getString(n));
    } while (cursor.moveToNext());

将每个记录的逗号分隔值提取到String中。您可以拆分字符串并单独使用这些值。