繁体   English   中英

Android SQL仅返回一列

[英]Android SQL only returns one column

我得到了一个包含以下布局的SQL数据库:

SQL表

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

我创建了一个游标,它应该使用以下命令从两列中获取所有值:

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());
        }

您的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中。 您可以分割字符串并单独使用值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM