android-room - 房间数据库:如何将列名检索到字符串列表中?
问题描述
我有一个名为“addresses”的 Room 表,有 15 列。我检索一行并希望将值放入 List<String>,而不是 List<Addresses>。那可能吗?
@Query("SELECT * FROM addresses WHERE myid= :id")
List<String> getAddressAsList(int id);
此外,是否可以像这样将数据库表列名和值一起检索到 map <"column name","value"> 的列表中?
@Query("SELECT * FROM addresses WHERE myid= :id")
List<Map<String, String> getAddressAsList(int id);
解决方案
您可以使用 SupportSQLiteDatabase 但不能使用 Dao。
假设你在一项活动中,
db = yourRoomDatabase.getInstance(this);
- 即你通常会使用类似的东西
yourDao = db.getYourDao();
然后myAddressList = dao.getAddressList();
然后你可以这样做: -
SupportSQLiteDatabase sdb = db.getOpenHelper().getWritableDatabase();
Cursor csr = sdb.query("SELECT * FROM address WHERE myid=?",new String[]{String.value(id)}
然后要获取 Cursor 中的列名列表,您可以使用:-
val columnNames = csr.columnNames
要获取列名和值的映射,您可以使用:-
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()
推荐阅读
- wpf - 通过具有 ContextIdle 优先级的 Dispatcher.BeginInvoke 调用时,永远不会执行委托
- pandas - 如何使用 matplotlib 绘制以下带有三列的 pandas 数据集?
- python - 2 个连接到同一脚本中的同一 API。我需要ping两个吗?
- ssms - SQL Server Management Studio 2017 - 选项卡未重绘
- haxe - 如何从 Haxe 主函数内的命令行获取参数?
- c# - 如何让我的 ServiceInstaller 项目包含 PDB 文件?
- delphi - 如何将实体添加到我的 XML 文档的 entitycollection 中?
- r - 如何接受参数、接受用户输入和存储数据?
- angular - 如何在 Ionic 3 中使用 *ngFor 访问已解析数组的内容?
- c# - 用我应该替换 dirX 让我的子弹左右射击