【问题标题】:How to output SQLite column to ArrayList? [duplicate]如何将 SQLite 列输出到 ArrayList? [复制]
【发布时间】:2016-10-06 07:42:49
【问题描述】:

我有一个 SQLite 数据库。

这是一些设置它的代码:

// Field Names:
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_DESCRIPTION = "description";

public static final String[] ALL_KEYS = new String[] {KEY_ROWID, KEY_NAME, KEY_DESCRIPTION};

// Column Numbers for each Field Name:
public static final int COL_ROWID = 0;
public static final int COL_NAME = 1;
public static final int COL_DESCRIPTION = 2;

// DataBase info:
public static final String DATABASE_NAME = "dbMetrics";
public static final String DATABASE_TABLE = "mainMetrics";
public static final int DATABASE_VERSION = 1; 

//SQL statement to create database
private static final String DATABASE_CREATE_SQL =
        "CREATE TABLE " + DATABASE_TABLE
                + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                + KEY_NAME + " TEXT NOT NULL, "
                + KEY_DESCRIPTION + " TEXT"
                + ");";

我想将我的一列 KEY_NAME 输出为 ArrayList。

为此,到目前为止,我已经生成了以下代码:

public ArrayList<String> getAllStringValues() {
        ArrayList<String> myStringValues = new ArrayList<String>();
        Cursor result = db.query(true, DATABASE_TABLE,
                new String[] {KEY_NAME}, null, null, null, null,
                null, null);

            **********CODE NEEDED HERE***********
        

        System.out.println(Arrays.toString(myStringValues.toArray()));
        return myStringValues ;

    }

但是,我不确定如何从此处将列中的数据获取到 ArrayList 中。

我的问题

有人可以帮我设计一个循环,遍历列中的每一行并将数据放入 ArrayList 中吗?

我很确定我需要在某个时候使用

result.getString(result.getColumnIndex(KEY_NAME))

为了做到这一点,但同样,我不确定如何。

任何帮助将不胜感激。

【问题讨论】:

  • 阅读 Cursor 类的文档?有一些方法可以用来迭代它
  • 从这个开始,然后学习如何从光标中提取数据。 stackoverflow.com/questions/10723770/…
  • 问题是,这里提供的答案似乎只打印了唯一值。例如,我希望我的输出打印[Test,Test2,Test2,Test],但它会删除重复项并打印[Test,Test2]。如何避免这种情况?我希望它打印所有内容,而不仅仅是不同的内容。

标签: java android sqlite arraylist


【解决方案1】:
 if (Cursor.moveToFirst()) {
                do {
                    keyname.add(Cursor.getString(Cursor.getColumnIndex("keyname")));
                    key_description.add(Cursor.getString(Cursor.getColumnIndex("key_description")));

                } while (Cursor.moveToNext());
            }
            Cursor.close();

试试这个代码,如果不起作用,告诉我

【讨论】:

  • 这是问题所在:它可以工作,但某些条目具有相同的值。例如,它应该打印[Test,Test2,Test2,Test],但它会删除重复项并打印[Test,Test2]。如何避免这种情况?我希望它打印所有内容,而不仅仅是不同的内容。
  • 不,它不会删除重复项,arraylist 可以保存重复项。我已经尝试过这段代码,它工作正常。
  • 对我有用。
  • 你能在 logcat 中打印这些 arraylist 并显示给我吗.. 以及在 logcat 中打印所有表。然后我们可以看看你的情况出了什么问题。
  • 我解决了。令人惊讶的是,db.query 部分中的“true”一词是问题所在,它正在删除所有不明确的条目。不知道为什么。我只是做了一系列的调试步骤,几个小时后弄明白了。
猜你喜欢
  • 2016-08-22
  • 1970-01-01
  • 2017-11-24
  • 2013-08-12
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
相关资源
最近更新 更多