【问题标题】:SQLite select query to stringSQLite 选择查询到字符串
【发布时间】:2014-09-27 01:28:14
【问题描述】:

我无法从以下 SQLite 选择查询函数中添加读取数据。我有一个包含 3 列的表,即 driverID、driversName、driversNo。

它应该返回一个简单的字符串,但是唉。

public String readDrivers() {
    Cursor cursor = database.query(MySQLiteHelper.PROFILE_TABLE_NAME, necessaryColumns, null, null, null, null, null);

    if (cursor != null){
        cursor.moveToFirst();
        Log.v("TEST", Integer.toString(cursor.getCount()));
        Log.v("TEST", cursor.getColumnName(0));
        Log.v("TEST", cursor.getColumnName(1));
        Log.v("TEST", cursor.getString(0));
        Log.v("TEST", cursor.getString(1));
    }

    String returnString = cursor.getString(0) + cursor.getString(1);
    return returnString;
}

以下是 LogCat 的最新结果。由于某种奇怪的原因,最后两个日志没有显示。

08-04 20:27:35.271: V/TEST(25126): 1
08-04 20:27:35.271: V/TEST(25126): driversName
08-04 20:27:35.271: V/TEST(25126): driversNo

任何帮助将不胜感激。

其余代码基于此tuthttp://www.vogella.com/tutorials/AndroidSQLite/article.html

【问题讨论】:

  • 那么它返回了什么?你有任何错误吗?如果是这样,请发布您的 LOGCAT。
  • 让我建议您使用column names,而不是列索引(基于0),因为您不知道列的放置顺序你的光标。
  • 我没有收到任何错误,只是一个空的文本视图。我也更改了列名,但也没有解决方案。

标签: android sqlite persistent-storage


【解决方案1】:

如果您提供表结构会更容易,但无论如何,一些信息可能会有所帮助:

当非空时,光标从位置-1开始。

阅读光标的好方法是

while (cursor.moveToNext()) {
    ...
}

还有,

String returnString = cursor.getString(1) + cursor.getString(2);

上述代码将从查询返回的第一行开始连接列索引 1 和列索引 2(请注意索引从 0 开始)。

编辑: 那么以下内容应该可以正常工作。

public String readDrivers() {
    Cursor cursor = database.query(MySQLiteHelper.PROFILE_TABLE_NAME, necessaryColumns, null, null, null, null, null);

    List<String> list = new ArrayList<String>;
    while (cursor.moveToNext()) {
        list.add(cursor.getString(1) + cursor.getString(2));
    }

    return list;
}

【讨论】:

  • 我的表有三列,分别是driverID、driverName、driverNo。我打算连接两个字符串。
  • 上面的编辑会返回一个串联驱动的列表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 2011-03-30
  • 1970-01-01
相关资源
最近更新 更多