LA_*_*mie 5 sql android sql-update
我正在使用Room数据库编写Android应用。我的数据库包含具有以下代码的GroupVc实体:
@Entity
public class GroupVc {
@ColumnInfo(name = "language")
private String language;
@NonNull
@PrimaryKey
@ColumnInfo(name = "name_group")
private String nameGroup;
public GroupVc(String language, String nameGroup) {
this.language = language;
this.nameGroup = nameGroup;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
@NonNull
public String getNameGroup() {
return nameGroup;
}
@NonNull
public void setNameGroup(String nameGroup) {
this.nameGroup = nameGroup;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我的实体类包含两列,其中nameGroup是我的PrimaryKey。在我的应用程序中,我想让用户查看组的完整列表,并通过输入新的组名称来更改组DialogFragments的名称。为了实现这样的功能,我创建了下一个DAO @Query方法:
@Dao
public interface GroupVcDao {
@Query("UPDATE groupvc SET name_group= :newName WHERE name_group= :currentName")
void updateNameOfGroup(String currentName, String newName);
}
Run Code Online (Sandbox Code Playgroud)
在此查询中,我想通过从RecyclerView(currentName参数)获取GroupVc的现有名称,并从DialogFragment(newName参数)应用新的名称来更改GroupVc的名称。我的问题是,此查询不会产生任何影响,也不会更新名称。虽然我没有任何错误或异常。所以我需要知道:这样的查询是否正确?是否可以在主键同时具有可变值和条件的情况下编写Update查询?
这是我在GitHub上完整项目的链接 https://github.com/LAHomieJob/VocaNote
小智 0
我不能确定,但我的猜测是您的查询正在工作,但由于您正在更改主键,您的数据库将保留旧对象和新对象的实例。尝试检查是否有一个对象同时具有旧 name_group 和新 name_group。此外,如果您希望允许用户更改组名称,则将主键移至 UUID 或其他不会更改的键可能是有意义的。
| 归档时间: |
|
| 查看次数: |
1239 次 |
| 最近记录: |