getAllData(); 我还指定了对 n-6ren">
gpt4 book ai didi

java - 如何查询用户输入?

转载 作者:行者123 更新时间:2023-11-29 23:20:33 26 4
gpt4 key购买 nike

我正在学习 SQLRoom。我已成功查询到房间中的所有数据:

@Query( "SELECT * FROM my_table" )
LiveData<List<MyRoomEntity>>getAllData();

我还指定了对 name 列的搜索:

@Query( "SELECT id, name FROM my_table" )
LiveData<List<MyRoomEntity>>getAllNames();

下一步是查询用户输入。假设用户想要在数据库中搜索 Bob。这看起来像一个查询吗?显然查询应该是动态的并且查询 userInput 而不是特定的 Bob ;)

我已经在寻找解决方案,但我是 RoomSQL 的新手,所以我想我需要一些帮助:)

最佳答案

使用 :input 并确保包含一个参数,如下所示:

@Query("SELECT * FROM my_table WHERE name = :input" )
LiveData<List<MyRoomEntity>>getUserInputName(String input);

然后在Repository中:

public LiveData<List<MyRoomEntity>> getUserInputName(String inputName) {
return this.roomDao.getUserInputName(inputName);
}

ViewModel 中:

public void getUserInputName(String inputName) {
repository.getUserInputName(inputName).observe( mOwner, new android.arch.lifecycle.Observer<List<MyRoomEntity>>() {
@Override
public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {
if(myRoomEntities != null) {
for(MyRoomEntity item: myRoomEntities) {
Log.d("TAG ROOM ", "Input Name: " + item.toString());
}
}
}
} );
}

只需传递参数和自变量即可。最后,当您调用 MainActivity() 中的方法时:

private String input = "Joe";
myViewModel.getUserInputName(input);

关于java - 如何查询用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54397531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com