【问题标题】:How do I pull one column from an SQLite into one string?如何将 SQLite 中的一列拉到一个字符串中?
【发布时间】:2013-10-24 02:41:02
【问题描述】:

我正在寻找一种有效的方法来做到这一点。一种希望需要一个字符串的方法。我希望数据如下所示:

第1行
第2行
第3行
第4行

我想尝试使用一个字符串的原因是因为我可能会从不同的表中调用相同的查询,并且它会有不同的行数。一个可能有 10 个,另一个有 8 个。所以当可能有 10 个表时,我不能专门使用 8 个字符串。

有没有一种方法可以做到这一点,它可以简单地收集一列的数据,然后我可以将其格式化为像上面那样/

我目前拥有它,但使用多个字符串。见下文:

//select stuff
    Cursor c = db.rawQuery("SELECT * FROM table_one", null);
        c.moveToFirst();
        in1 = c.getString(c.getColumnIndex("column_one"));
        c.moveToNext();
        in2 = c.getString(c.getColumnIndex("column_one"));
        c.moveToNext();
        in3 = c.getString(c.getColumnIndex("column_one"));
        c.moveToNext();
        in4 = c.getString(c.getColumnIndex("column_one"));
        c.moveToNext();
        in5 = c.getString(c.getColumnIndex("column_one"));

    String all = in1 + "\n" + in2 + "\n" + in3 + "\n" + in4 + "\n" + in5;

当然,此代码假定列中总是有 5 位信息,因为它会发生变化。

有没有更好的办法?

感谢您的帮助。

【问题讨论】:

  • 您是在问如何转置您的表格,然后连接所有单个值吗?喜欢使用 group_concat(str separator "\n") ?
  • 当我使用循环时,我似乎得到了空白页。

标签: android sql database string sqlite


【解决方案1】:

你可以像这样使用循环和构造数据:

Cursor c = db.rawQuery("SELECT * FROM table_one", null);
String all = "";
if (c != null) {  
    if(c.moveToFirst())
        do {
            String in = c.getString(c.getColumnIndex("column_one"));
            all += in + "\n";
        } while (c.moveToNext());
    c.close();
} 

【讨论】:

  • 这对我有用。相关的一个附带问题,列中的最后两个单元格是空的,有没有办法防止它在应用程序中显示为“null”?
  • 就在all += in +"\n"前面做if(in != null)
  • 谢谢,不胜感激!
  • 请考虑使用StringBuilder 之类的东西。在 Java 中,字符串是不可变的,因此每次连接字符串时,都会创建多个无用的对象,这些对象需要在操作完成后立即进行垃圾回收。对于小型数据集,这可能没什么大不了的,but you're definitely going to notice it as it grows
猜你喜欢
  • 1970-01-01
  • 2017-01-17
  • 2022-01-04
  • 2019-08-01
  • 2021-03-07
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
相关资源
最近更新 更多