sqlite更新数据不起效。很怪的问题,大家帮忙看看啊

yueyakk 2016-05-15 08:12:49
简单的说就是在android程序 的一个Service里更新了数据之后,再去查询数据,发现数据还是没修改之前的,找不到原因啊?



public class UploadPicService extends Service {
// / 上下文
private Context context;
/// 全局的应用
private MyApplication mApplication;
private Hashtable<String, JSONObject> updateDates;//保存正在上传的图片列表,如果返回了结果,则从中移出;
private MediaDataDao daoservice;
private TableData tabledata;
private TableData mediaTable;
@Override
public IBinder onBind(Intent arg0) {
return null;
}

@Override
public void onCreate() {
System.out.println("service create");
context = getBaseContext();
mApplication = MyApplication.getInstance();
updateDates=new Hashtable<String, JSONObject>();
daoservice = new MediaDataDao(context,MapSharePreferences.getUserDBDirectory(context));
}


@Override
public void onStart(Intent intent, int startId) {
if (intent != null) {
tabledata = daoservice.queryMaxByRid(mApplication.missionId,Constant.TABLE_ZHIFA_XCJC_ZN);
mediaTable = daoservice.queryMaxByRid(tabledata.id,SystemConstant.MY_MEDIA_TABLENAME);
new Thread(new Runnable() {
@Override
public void run() {
try {
//图片上传等一系列操作后,无关数据库操作
Message msg=new Message();
msg.what=1003;
msg.obj=tempMediaTable;
handler.sendMessage(msg);//更新数据库

}).start();
}
}

private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1000:// 图片上传成功
String errorMsg1 = (String) msg.obj;
Toast.makeText(context, errorMsg1, Toast.LENGTH_LONG).show();
break;
case 1001:// 图片上传成功
Toast.makeText(context, "图片上传成功!", Toast.LENGTH_LONG).show();
break;
case 1002:// 图片上传失败
String errorMsg3 = (String) msg.obj;
Toast.makeText(context, errorMsg3, Toast.LENGTH_LONG)
.show();
case 1003://更新数据
TableData tempMediaTable=(TableData)msg.obj;
System.out.println(tempMediaTable.body);
daoservice.updateById(tempMediaTable, SystemConstant.MY_MEDIA_TABLENAME);
TableData temp=daoservice.queryMaxByRid(tempMediaTable.rid,SystemConstant.MY_MEDIA_TABLENAME);
System.out.println(temp.body);
break;
}
}
};
}

dao层的代码是这样的

public boolean updateById(TableData tableData, String tableName)
{
creatTable(tableName);
try {
synchronized (this) {
db.beginTransaction();
this.db.execSQL("update " + tableName +
" set rid = ?,head=?,body=?,location=? where id = ? ",
new String[] { tableData.rid, tableData.head, tableData.body,
tableData.location, tableData.id });
db.setTransactionSuccessful();
db.endTransaction();
}
return true;
} catch (Exception e) {
e.printStackTrace();
db.endTransaction();
}
return false;
}

但是发现更新后有时查出来是改变了的,有时却不起效
...全文
386 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yueyakk 2016-05-16
  • 打赏
  • 举报
回复
结贴,妈蛋。,不知道哪个傻子写的程序,在另外一个地方把数据库的内容用旧的内容覆盖了,也不考虑数据库更新后自己数组里保存的数据就不是最新的了,代码写的完全不合理,改别人的bug真的太痛苦了
  • 打赏
  • 举报
回复
我只看看,并不能解决

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧