使用 -Android Sqlite Room ORM 传递带有参数的 TableName 时出错
Getting Error when Passing the TableName with Parameters using -Android Sqlite Room ORM
1.when 尝试使用方法以 tablename 作为参数访问数据,在 android.
中使用 Room Library 出现下面提到的错误
-->查询有问题:ERROR] SQL错误或缺少数据库(没有这样的table:table名称)
MainActivity.class
userData1= userSampleDatabase.daoAccessForUser().getItembyIdvalue("UserData","1");
DaoAccessForUser.class
@Query("select * from 'tableName' where id = :id")
List<UserData> getItembyIdvalue(String tableName,String id);
提前致谢。
房间不支持 table 名称的动态替换。
在您的 DAO 中,将 'tableName'
替换为实际的 table 名称,如关联的 @Entity
中所定义。或者,use @RawQuery
而不是 @Query
并在运行时提供整个 SQL SELECT
语句。
编译时出现这个错误是有原因的; Room 在 编译 时检查查询以确保您的应用程序不会 运行 在 [=34= 时出现问题]时间..
据房间所知,您的table
中可能根本没有id
!为防止您的应用遇到此类问题,房间要求您事先提供 table
姓名。如果此功能对您的项目至关重要,请尝试将 ORMs 与 Query Builder
一起使用,例如 greenDAO 或 dbflow
希望您了解 Room 行为 ^^
正如 CommonsWare 建议的那样,您可以使用 @RawQuery
在你DaoAccessForUser.class
@RawQuery
List<UserData> getUserDataList(String query);
你可以这样称呼它
String tablename="UserData";
String id="1";
userData1= userSampleDatabase.daoAccessForUser().getUserDataList("select * from "+tablename+" where id = " + id);
1.when 尝试使用方法以 tablename 作为参数访问数据,在 android.
中使用 Room Library 出现下面提到的错误-->查询有问题:ERROR] SQL错误或缺少数据库(没有这样的table:table名称)
MainActivity.class
userData1= userSampleDatabase.daoAccessForUser().getItembyIdvalue("UserData","1");
DaoAccessForUser.class
@Query("select * from 'tableName' where id = :id")
List<UserData> getItembyIdvalue(String tableName,String id);
提前致谢。
房间不支持 table 名称的动态替换。
在您的 DAO 中,将 'tableName'
替换为实际的 table 名称,如关联的 @Entity
中所定义。或者,use @RawQuery
而不是 @Query
并在运行时提供整个 SQL SELECT
语句。
编译时出现这个错误是有原因的; Room 在 编译 时检查查询以确保您的应用程序不会 运行 在 [=34= 时出现问题]时间..
据房间所知,您的table
中可能根本没有id
!为防止您的应用遇到此类问题,房间要求您事先提供 table
姓名。如果此功能对您的项目至关重要,请尝试将 ORMs 与 Query Builder
一起使用,例如 greenDAO 或 dbflow
希望您了解 Room 行为 ^^
正如 CommonsWare 建议的那样,您可以使用 @RawQuery 在你DaoAccessForUser.class
@RawQuery
List<UserData> getUserDataList(String query);
你可以这样称呼它
String tablename="UserData";
String id="1";
userData1= userSampleDatabase.daoAccessForUser().getUserDataList("select * from "+tablename+" where id = " + id);