这是我的问题
@Query("SELECT EXISTS(SELECT 1 FROM media2 WHERE path = :path AND isFav = 1 LIMIT 1)")
int checkIsFav(String path);
从存储库调用
public boolean checkIsFav(String path) {
return mDatabase.favDAO().checkIsFav(path) == 1;
}
这有时会导致以下错误
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
Observable.fromCallable(() -> mDatabase.favDAO().checkIsFav(path) == 1);
或
Observable.just(mDatabase)
.subscribeOn(Schedulers.io())
.subscribe(db -> db.favDAO().insertMedia2(media));
我正在我的片段中使用这个方法
if (mediaViewModel.checkIsFav(media.getPath())){
mediaViewModel.removeFav(media.getPath());
} else {
media.setFav(true);
mediaViewModel.addFav(media);
}
和回收器适配器。
boolean isfav = ((App)context.getApplicationContext()).getRepository()
.checkIsFav(currentItem.getPath());
更新的问题与单人:
这是我在Dao中的查询
@Query("SELECT EXISTS(SELECT 1 FROM media2 WHERE path = :path AND isFav = 1 LIMIT 1)")
Single<Integer> checkIsFav(String path);
我在存储库中的方法
public Single<Integer> checkIsFav(String path){
return mDatabase.favDAO().checkIsFav(path);
}
java prettyprint-override">((App)context.getApplicationContext()).getRepository().checkIsFav(media.getPath())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).subscribe(
new SingleObserver<Integer>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(Integer integer) {
}
@Override
public void onError(Throwable e) {
}
}
);
if (App.favDB.existFav(currentItem.getPath()))
public boolean existFav(String path) {
SQLiteDatabase db = getReadableDatabase();
Cursor cur = db.rawQuery(
String.format("SELECT EXISTS(SELECT 1 FROM %s WHERE %s=? LIMIT 1)", TABLE_NAME, MEDIA_PATH),
new String[]{ path });
boolean tracked = cur.moveToFirst() && cur.getInt(0) == 1;
cur.close();
return tracked;
}
也许我没有好好考虑这件事。
我要做的只是确定此介质是否存在于我的表中。
我认为你应该在主线程中观察你的数据。如此使用
observeOn(AndroidSchedulers.mainThread()).
尝试将其更改为
Observable.just(mDatabase)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(db -> db.favDAO().insertMedia2(media));
另请参阅以下关于observeon()
的注释
我试图从获取数据。总共有9个表格,我必须相应地从所有表格中显示产品列表。 我考虑过使用连接,并尝试了左连接,如下所示: 这里是主表,pid是从tbl2到tbl9的所有表的。 注意:这里我在所有表上使用了来避免长查询,但是在实际的数据库操作中,只提到特定的列来提高性能。 现在实际的问题是,我没有得到所有的记录从表使用左加入。只检索中对应的每个条目的最后一行。 我使用了GROUP BY来避免重复的左连
我有一个在AnyLogic中有2列的数据库表。我想知道查询dsl代码或sql代码,在将我的输入与第1列的值进行比较并进行线性插值后,从第2列的表中选择一个值。Anylogic中的代码提供了一个值
我正在使用MVVM架构模式创建应用程序。我正在使用RxJava包装器从房间数据库而不是LiveData中获取数据。我已经设置了我的 DAO类和所有必要的方法来执行操作。我想知道如何使用存储库中的Flowable或Watable运算符获取数据。 下面是我的代码: 用户DAO。Java语言 用户epository.java MainActivityViewModel.java 有人请告诉我如何使用Rx
问题内容: 我的代码有问题。 像这样的情况: 我有一个下拉列表,如果选择“个人”,则会出现新的下拉列表,其中包含从数据库查询中检索到的数据;如果选择“公开”,则该下拉列表将消失。 这样的HTML代码: 查询如下: 像这样的JavaScript代码: 我不知道如何将值/结果发送到javascript代码(选择选项中的值和名称)。 问题答案: 在javascript中,您必须对您的php文件进行操作:
我正在使用Astyanax使用CQL3查询来查询Cassandra,它工作得很好。 前面的代码是连接的一部分,现在,我想执行查询并获取数据,但我不知道我希望查询中的数据类型,因此我不知道使用什么方法来获取值,如下面所示,我不知道是否需要使用、、等。 有没有办法让我知道这件事?使用这个API,或者使用不同的API。 谢谢你。
好吧,我的问题是这段代码没有返回任何内容,至少它没有打印任何内容。唯一有效的方法是$user_email,它可以打印用户的电子邮件。 代码: “用户”表包含7个不同的键: ID(bigint,主键,auto_increment),组(int),电子邮件(varchar),密码(varchar),用户名(varchar),名称(varchar),验证(int)。 "group"表包含3个不同的键: