本文介绍了房间数据库:如何将列名检索到字符串列表中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为addresses"的 Room 表,有 15 列.我检索一行并希望将值放入 List<字符串>,而不是列表.这可能吗?

I have a Room table named "addresses" with 15 columns. I retrieve one row and want to get values into List< String >, not List< Addresses >. Is that possible?

@Query("SELECT * FROM addresses WHERE myid= :id")
List<String> getAddressAsList(int id);

此外,是否可以像这样将数据库表列名和值一起检索到映射列表中?

Moreover, is it possible to retrieve database table column names together with values into list of map <"column name","value"> like this?

@Query("SELECT * FROM addresses WHERE myid= :id")
List<Map<String, String> getAddressAsList(int id);

推荐答案

您可以使用 SupportSQLiteDatabase 但不能使用 Dao.

You can use a SupportSQLiteDatabase but not a Dao.

假设你在一个活动中,

db = yourRoomDatabase.getInstance(this);

  • 即然后你通常会使用类似 yourDao = db.getYourDao(); 的东西,然后myAddressList = dao.getAddressList();
    • i.e. you'd typically then use something like yourDao = db.getYourDao(); and thenmyAddressList = dao.getAddressList();
    • 然后你可以这样做:-

      SupportSQLiteDatabase sdb = db.getOpenHelper().getWritableDatabase();
      Cursor csr = sdb.query("SELECT * FROM address WHERE myid=?",new String[]{String.value(id)}
      

      然后要获取 Cursor 中的列名列表,您可以使用:-

      Then to get the list of column names in the Cursor you can use:-

          val columnNames = csr.columnNames
      

      要获取列名和值的映射,您可以使用:-

      To get the Map of columnnames and values you could use :-

          val columnsAndValues: MutableMap<String,String> = mutableMapOf()
          while (csr.moveToNext()) {
              for (i: Int in 0..csr.columnCount) {
                  columnsAndValues.put(csr.columnNames.get(i),csr.getString(i))
              }
          }
          csr.close()
      

      这篇关于房间数据库:如何将列名检索到字符串列表中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 20:10