这么久没人能帮我吗? Bmob服务器。在查询数据时只能异步查询,onSuccess出现脏数据 ,请问怎么解决?

一些片段代码

//定义个个获取查询出的数据的数量
private int carNum;

public int findCars(String goods_id, String user_id){
//--and条件1
BmobQuery eq1 = new BmobQuery("car");
eq1.addWhereEqualTo("goods_id", goods_id);
//--and条件2
BmobQuery eq2 = new BmobQuery("car");
eq2.addWhereEqualTo("user_id", user_id);
//整合成and条件
List> andQuerys = new ArrayList>();
andQuerys.add(eq1);
andQuerys.add(eq2);

//查询符合整个and条件的人
BmobQuery query = new BmobQuery("car");
query.and(andQuerys);

query.findObjects(context, new FindCallback() {
@Override
public void onSuccess(JSONArray arg0) {
Log.i("bmob", "for的legrnt::" + arg0.length() + "条数据。");
carNum=arg0.length();
}

@Override
public void onFailure(int arg0, String arg1) {
Log.i("bmob", "查询失败:");
}
});
Log.i("bmob", "count:" +carNum);
return carNum;
}

然后再另一个类中使用该方法,一个点击事件里
public void onClick(View v) {
//将商品的id和用户id存入数据库
if(User.getCurrentUser(context)== null){
Intent intent = new Intent(context, LoginActivity.class);
context.startActivity(intent);
}else {
//将商品的id存入数据库
CarDao carDao = new CarDao(context);
GoodsDao goodsDao=new GoodsDao(context);
//添加到购物车里
if(carDao.findCars(goodsId,user_id)<=0) {
Log.i("bmob", "进入for循环。。。。。。");
carDao.saveGoods(goodsId, User.getCurrentUser(context).getObjectId());
}else {
carDao.updateCar(carDao.getCarId(goodsId,user_id));
}
//商品可售数量减一
goodsDao.updateData(goodsId);
}
}

数据输出
for的legrnt::3
count:0

也就是说findCars(String goods_id, String user_id)方法中在onSuccess里成功对carNum赋值了,但是return回来后确实0.
在网上查了一些资料说是onSuccess异步加载的问题,
我试过用handler去获取,是可以获取得了在onSuccess里面的数据,但是handler里面的数据我又拿不出给主线程里的变量,还是为null
小弟我能力不够解决这个问题,这问题已经困扰我好几天天了,希望有大神可以帮下我。

2

4个回答

图片说明

1

addQuerys应该在query后的 onSuccess里面再实现List添加元素 或者使用handler 您这样会导致前面查询未结束后面代码已经执行,导致空指针出现

1
a731896628
a731896628 是的,没错。就是这个问题,但是我需要的事解决问题的方法。
一年多之前 回复

取到数据后, 执行刷新ui的方法 Activity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
//todo
}
});

0
lemonCase
lemonCase 回复a731896628: 你把这句话丢到 onsuccessint i=carDao.findCars(goodsId,user_id);
一年多之前 回复
a731896628
a731896628 确实,如果在onsuccess里通过更新适配器的话是可以将数据刷新到界面,但是一个问题是在主线程上赋值int i=carDao.findCars(goodsId,user_id); 这样的话i是空的,就是说carDao.findCars(goodsId,user_id)还没来得及查完数据,这句话就已经走完了。
一年多之前 回复

你好我是要成为海贼王的男人

-2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Bmob查询获取不到相应的数据的问题
今天在写用户订单方面的项目模块,自定义订单表并保存到服务器后,发现查询不到相应的订单信息,虽然提示查询成功,但是RecyclerView压根不显示任何东西。通过逛bmob的社区我发现:查询操作是异步执行的,需要在查询方法中更新ui,于是代码更改如下就ok了: /从服务器获取用户的所有订单的各项数据 private void getData(){ datas=new ArrayLis
Bmob中的几种查询方法
package com.kavinapps.androidk.my2webview; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import org.json
【Bmob】数据查询
1.查询MyAddBook 表中所有数据String sql = "Select *from MyAddBook"; new BmobQuery<MyAddBook>().doSQLQuery(sql, new SQLQueryListener<MyAddBook>() { @Override public void done(Bmob
安卓Bmob数据添加和查询以及验证码
记录一下Bmob对数据的增加和查询以及验证码的索取,记录以便以后的使用1,对于Bmob的基本配置建议百度,别人介绍的比我要好。 2,新建一个Lost类package com.example.bmob;import cn.bmob.v3.BmobObject;/** * Created by 17478 on 2018/4/6. */public class Lost extends BmobO
Bmob的一些事儿(一)
先来谈谈Bmob 前言: Bmob是专为移动开发者准备的移动云存储服务平台,虽然起步不是很久,但使用简单并且使用,对于移动开发所需要的数据管理,官网定制,应用创建简单方便,这一点个人认为比百度Frontia好,对于移动端用户管理头疼的开发者来说是一个利器。 几大功能先说下: 一、数据云存储 这个不用说了吧,最基本功能,数据库,文件等都可以放。 二、云端代码 就是在上面写一些代码来操作
Bmob数据库查询结果为null
在用Bmob读取数据时,使用条件查询。获取到结果后可以打印objectid,但是获取里面的值为null。一遍遍的看官方文档,终于发现了问题。出现问题的环境:public class QuestionTable extends BmobObject { private String mquestion; private String mresult; private long
redis缓存 脏数据
dc数据收集在运行的时候,切换了一次conf数据库,结果导致菜单:应用-->JVM下的内存使用量图 没有数据。原因是切换了数据库,导致redis缓存metric数据错误,解决方式,删除掉dump.rdb文件,重新启动redis
数据库并发情况下什么情况会出现脏读,如何防范脏读
1 2 3 4 5 6 7 8 9 10 BEGIN tran DECLARE @name NVARCHAR(50) SELECT @name=name FROM dbo.investor WITH(UPDLOCK) WHERE id=1206 IF @name='sxf359' BEGIN
用Bmob实现用户数据添加和查询显示
我用的例子利用Bmob云服务器实现了让用户上传待出售商品信息,以及能浏览在售商品信息的小功能。刚接触Bmob感觉它确实好用,但我不得不吐槽那个案例更新的太慢了,新版本的SDK跟老版本还是有很大差别的,建议更新SDK的同时也更新一下案例。再就是文档写的不怎么详细。好了,废话不多说,先看一下我的效果图: 其中,主要问题就是用户数据上传和数据的下载显示在屏幕上。 注意啦: 在这里我用的是Bmo
bmob根据时间排序分页查询多条数据
bmobObject默认有createdAt,updatedAt时间字段,保存这个bmobObject对象的生成时间和更新时间。        bmob开发文档的时间查询示例为:        如果想查询指定日期之前的数据,则可以使用addWhereLessThan或者addWhereLessThanOrEqualTo(包含当天)来查询。        如果想查询指定日期之后的数据,
Bmob易出现的各种错误总结
1.Username以及Password为Bmob中的User表,此表字段已经存在,故不可在javaBean中进行创建 2.Bmob版本问题 3. user.signUp(new SaveListener() { @Override public void done(Object o, BmobException e) {4._Us
数据库并发下的脏数据问题
事情是这样的,我有个需求,简单来说是每次insert三条记录,每次都给本次insert的记录version+1,理想情况下,假设没有并发,最后的数据应该是这样 id    name        version 1     name           1 2     name           1 3     name           1 4     name
基于Bmob平台数据管理常用方法整理
最近想搞一下基于Bmob平台的应用开发,发现确实挺方便的,很好的解决了服务器后台部署的难题,但是也有一些弊端,数据架构的可扩展性不强,做一些数据结构简单的应用还是可以的。代码备份一下~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
没人能帮我吗???
想在DDraw的游戏中加一个300*300像素的转动星球的动画作为游戏背景。rn本来,我用3dmax先渲出300贞存成300张bmp,再在ddraw中创建300个Surface,一张一张blt。但该方法耗资太大。rnrn有其它的方法吗?rn能否用d3d在ddraw中渲出一个?(请具体告知。谢谢!)rnrnrnrn用IDirect3DRm2接口得到了IDirect3DRmDevice2设备,并把它和一个DDraw的BackSuface相连。这样就能把3D物体渲染到DDraw的表面上。但是,如何在渲染过程中设置一关键色(例如黑色),使3D场景中的关键色(如黑色),能透明的写在BackSurface.rnrn如果IDirect3DRm2没有这样的功能,该如何?rn用IDirect3D接口可以实现吗?D3D8以前的接口支持.x的文件吗?rnrn请指教。万分感谢!rn
使用Bmob后端云遇到的坑
用着Bmob提供的后端云感觉挺好用的,期间遇到一些坑,查了文档也没见说明,在此做一下记录。比如像微信朋友圈那样发一条带图片的动态....
Bmob实现登陆注册,解决官方signUp与Success方法更新后出错问题
今天用Bmob写一个程序,发现官方给的登录注册方法不对,查看更新才发现问题。 官方文档给的注册是这样的 但你要这样写会发现报错,那是因为新的BmobSDK更新了方法。 那么新的我们该怎么写,代码贴上(只有signUp,布局及其他代码和官方文档一致) (注册) BmobUser bu = new BmobUser(); bu.setUsername(userName); bu.
对于分页时,若数据库的数据不断更新,不让前台显示脏数据(同一条数据重复显示)的处理方式
1.分页时排序,记录下当时排序的依据,例如分页时以id(id为自增长)倒序排列,记录下最大的id,下次分页查询时,以这个记录下的id作为限定条件查询数据,缺点是用户无法获得实时更新的数据,除非刷新网页. 2.对上面的的改进(在下拉式分页上使用效果较好),在前端实时显示最新的数据(需要在后台写代码进行数据的推送),前端将最新的数据拼接到页面的下面,用户下拉到页面的底端时再查询下一页数据,此时因为最
IIS 决 server application error 办法 最终解决
终极解决 IIS出现server application error,请问怎么解决
数据库的脏数据问题
脏读dirty   reads:当事务读取还未被提交的数据时,就会发生这种事件。举例来说:Transaction   1   修改了一行数据,然后   Transaction   2   在   Transaction   1   还未提交修改操作之前读取了被修改的行。如果   Transaction   1   回滚了修改操作,那么   Transaction   2   读取的数据就可以看作是
Android利用Bmob对后台数据进行简单的增删改查(二)
一、先写一个实体类,让它继承自BmobObject,并重写get和set方法,具体代码如下:   public class Person extends BmobObject { private String name; private String address; public String getName() { return name; ...
MySQL高并发下读取脏数据问题的解决方案
MySQL 在遇到高并发读写的情况下会读到脏数据,如何理解?举一个简单的栗子: 用户A、用户B、用户C 抢购一件商品,每人限购一件,商品库存为10,假如 A、B、C 并发情况下则同时得到 库存为 10,同时对库存10进行操作,看下相关示意图: 用户A 操作: 库存 10 -1 =9,对应的 SQL: update table set goods_number=goods_
使用bmob后端云中listview如何实现数据显示在第一个item
我最近在做一个小项目,使用了bmob后端云,方便了很多,其中遇到一个问题就是从数据库查询到数据之后如何让刚发表的帖子显示在listview列表的顶端也就是从上至下排序,其实很简单,在查询的时候写上这么一句代码query.order("-createdAt"); 这是按时间顺序排序,就可以实现刚发表的东西显示在第一位了
关于新手Bmob的日记小总结
今天要做自己的程序时,发现Bmob可以用作云端存储数据,所以正在Bmob的入门,发现视频教学的Bmob的网页界面更新了,然后Bomb的SDK更新后所有回调函数的onSuccess、onFailure方法统一调整为done(T t,BmobException e)形式;当e的值等于null时相当于传入失败。而且还发现了另一个问题BmobSDK_v3.5.0_0627rxjava(1.1.6)、rxa
mybatis二级缓存脏读现象
使用二级缓存的存取规则 1.增删改清空本mapping下所有缓存 2.查询重新获取二级缓存 脏读如何出现 用户,部门表 1.查询用户部门信息,定义在用户mapping中(张明,技术一部) 2.更新部门信息,部门表mapping中被清空(技术一部改名叫技术总部) 3.因为部门表mapping被清空,用户表mapping没有被清空,在查询用户部门信息链接查询时候,会脏读(张明,技术一部)
多线程处理读写数据库,脏数据梳理
在使用多线程进行大量数据操作的时候,采用设置mysql唯一标识的方式来解决脏数据,多线程的目的是为了效率,如果加锁之后就等于失去了使用多线程的意义 第一步:CREATE UNIQUE INDEX index_t_keywords_library_unique_1 ON t_keywords_library (keyword,language_id); 第二步: try { keywor
mybatis学习笔记(13)-查询缓存之一级缓存
mybatis学习笔记(13)-查询缓存之一级缓存 标签: mybatis mybatis学习笔记13-查询缓存之一级缓存 查询缓存一级缓存 一级缓存工作原理一级缓存测试一级缓存应用 本文主要讲mybatis的一级缓存,一级缓存是SqlSession级别的缓存。 查询缓存 mybatis提供查询缓存,用于减轻数据压力
dblink查询的时候后台出现的tx锁的解决方案
创建dblink的方法在我的blog中之前有写过:http://www.blogjava.net/soddabao/archive/2007/03/09/102821.html创建是很简单,但是在使用中后台却出现锁,查看这个锁的方法可以去console中看到或者查询数据库。其实这个锁倒不是最让人心烦的,而是每次使用dblink查询的时候,均会与远程数据库创建一个连接,dblink应该不会自动释放这...
Android - Bmob 读取存储数据
1、请求整张表所有数据 //请求图片数据(只有图片链接),返回一个CartoonsListEntity映射数组 BmobQuery query = new BmobQuery(); query.order("-createdAt");//依照数据排序时间排序 query.setLimit(2);//返回2条数据,如果不加上这条语句,默认返回10条数
Mybatis一级缓存导致分布式环境下的查询脏数据
    Mybatis一级缓存,也称本地缓存,默认是SqlSession级别的缓存。在一次程序与数据库的会话(Sqlsession)中,mybatis会维护一个以hashmap为存储结构的一级缓存,在这个会话中,只要在两次相同条件的查询中间,这个会话里没有出现增删改的操作,那么Mybatis会在第二次查询时候在缓存中将这个结果返回,导致两次查询的返回结果对象其实是一个,用“==”比较结果为true...
【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)
(转载)http://www.cnblogs.com/polobymulberry/p/4808209.html 本文转载请注明出处 —— polobymulberry-博客园 简介 Bmob中的数据关联分为Pointer和Relation两种(数据关联在我开发app过程中使用还是很频繁的,也算个难点。虽然之前没有学过数据库,但是觉得还是有必要熟悉和掌握它),对此,Bmob官方文
真的没人能帮我吗?
rn在鼠标右键中添加一菜单项,用这一项和上述代码能实现将网页上鼠标选中的英文小写字母变成大写。现在我若想把鼠标选中的文字复制并粘贴到指定的文本文件中又该怎么写呢?rnrn
脏数据的处理例子
故事起因:多人同时操作一个工作单据,保存时间有先后,后保存的数据覆盖了前面保存的数据。网上找到文章都是讲并发处理的原理,没人提到数据丢失后的处理。 这是个真实的案例,对于数据量很少的单据可以随时丢弃脏数据,但是如果是软件管理系统里含有大量数据的表单,直接丢弃就不好了。见下图 货代海运信息录入资料图 举例说明,我们在给一个供应链客户做的一张工作单,里面涉及的服务同时有两种(海运和陆运)...
【闲杂知识】java高并发解决方式?脏数据与不可重复读是什么?
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步   1、同步和异步的区别和联系   所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息...
Java程序的脏数据问题
Java程序的脏数据问题   脏数据(Out-of-date data),指过时的数据。   如果在您的Java程序中存在脏数据,将或多或少地给软件系统带来一些问题,如:无法实时地应用已经发生改变的配置,软件系统出现一些莫名其妙的、难以重现的、后果严重的错误等等。尽量避免脏数据的存在是非常有价值的。本文希望能在这方面给同行们一点帮助。Fragment 1. 缓存技术的脏数据问题   /**
redis中并发问题
redis中的并发问题 处理思路:      在使用redis高速缓存,它的事物和原子性没有MySql的完善,这种脏读情况是不可避免的,因此在解决的思路上应该是避免这种情况发生。    1、 储存变量的过期时间避免在同一时刻过期,否则会在统一时刻读取数据库。             解决办法:设置变量不同的过期时间   2、脏读问题         故名思以就是读取的数据不准确
Hibernate脏数据问题异常及解决思路
产品提交测试小组,返回如下异常bug Hibernate:     update         MAILBOX_VIEW     set         name=?,         homedir=?,         domainid=?,         groupid=?,         max_msg_count=?,         quota=?,         usag...
MYSQL事务避免脏读、不可重复读、幻读
事务具有ACID四种特性。 但是Isolation并发可能引起如下问题: 1.脏读 允许读取到未提交的脏数据。 2.不可重复读 如果你在时间点T1读取了一些记录,在T2时再想重新读取一次同样的这些记录时,这些记录可能已经被改变、或者消失不见。 3.幻读 解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。但是,如果另一个事务同时提
如何解决用户使用系统过程中由于异常而出现脏数据的问题
现象:在一个ACTION中对多个表进行数据操作,某一个操作出现异常,导致脏数据的出现 原因:因为异常的出现,导致程序执行过程中断,后续程序无法执行 解决: 方式一:添加try catch 在 catch代码块中添加删除操作,若出现异常则直接删除上述的数据操作 方式二:数据回滚 [list] [*]将该ACTION中涉及的所有数据操作,写到一个service的实现中,该接...
MySQL并发导致的脏数据分析
记录一下一个并发导致的脏数据问题(基于MySQL)。问题描述(银行操作员例子):比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户扣除50元,A先提交,B后提交。最后实际账户余额为1000-50=950元,但本该为1000+100-50 = 1050 。 首先分析下如何会导致问题的出现: 我们来些一个伪代码表示下A操作员操作执行的过程:
Bmob查询获取内部类的数据
BmobQuery查询数据,通过handler和message将数据传递出来
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 ios培训没人要吗 web服务器怎么使用教程