当前位置 : 主页 > 编程语言 > java >

多用户登陆、数据库分库、全版本升级

来源:互联网 收集:自由互联 发布时间:2021-06-28
UpdateManager public void startUpdateDb(Context context) { UpdateDbXml updateDbxml=readDbXml(context); if(getLocalVersionInfo()) { //拿到当前版本 String thisVersion=getVersionName(context); //拿到上一个版本 String lastVersion=l
UpdateManager
public void startUpdateDb(Context context)
    {
        UpdateDbXml updateDbxml=readDbXml(context);
        if(getLocalVersionInfo())
        {
            //拿到当前版本
            String thisVersion=getVersionName(context);
            //拿到上一个版本
            String lastVersion=lastBackupVersion;
            UpdateStep updateStep=analyseUpdateStep(updateDbxml,lastVersion,thisVersion);

            if(updateStep==null)
            {
                return;
            }
            List
 
   updateDbs=updateStep.getUpdateDbs();
            CreateVersion createVersion=analyseCreateVersion(updateDbxml,thisVersion);

            try {
                //更新每个用户的数据库
                for (User user:userList)
                {
                    String logicDbDir=parentFile.getAbsolutePath()+"/update"+"/"+user.getUser_id()+"/logic.db";

                    String  logicCopy=bakFile.getAbsolutePath()+"/"+user.getUser_id()+"/logic.db";
                    FileUtil.CopySingleFile(logicDbDir,logicCopy);
                }
                //备份总数据库
                String user=parentFile.getAbsolutePath()+"/user.db";
                String user_bak=bakFile.getAbsolutePath()+"/user.db";
                FileUtil.CopySingleFile(user,user_bak);
                // 第二步:执行sql_before语句,删除以及备份相关旧表
                executeDb(updateDbs, -1);

                // 第三步:检查新表,创建新表
                executeCreateVersion(createVersion,false);


                Log.i(TAG, "第三步检查新表完成!");
                // 第四步:从备份表中恢复数据,恢复后删除备份表
                executeDb(updateDbs, 1);
            }catch (Exception e)
            {

            }
            // 第五步:升级成功,删除备份数据库
            if (userList != null && !userList.isEmpty())
            {
                for (User user:userList)
                {
                    String logicDbDir=parentFile.getAbsolutePath()+"/update"+"/"+user.getUser_id()+".db";
                    File file=new File(logicDbDir);
                    if(file.exists())
                    {
                        file.delete();
                    }

                }
            }
            File userFileBak=new File(bakFile.getAbsolutePath()+"user_bak.db");
            if(userFileBak.exists())
            {
                userFileBak.delete();
            }

            Log.i(TAG,"升级成功");
        }
    }
 
multiuserDatabase.rar multiuserDatabase.rar
网友评论