1。问题是:当一个手机程序第一次在某部手机上运行时,程序会将apk带的那个数据库拷贝到data文件夹下
,如果我的程序自动更新,就是覆盖安装时,上个版本的程序遗留在sd卡上的那个数据库还在,新版本的程序由于数据库名称一样,包名一样,会自动读取旧的数据库,假设新版本的数据库有改动的话,岂不要出乱子我该怎样实现这种带数据的apk的自动更新啊

解决方案 »

  1.   

    大错!!!
      android开发中,数据库默认状态是存在手机内置存储卡里,而不是SD卡。
      

  2.   

    汗,之前在论坛里问过apk自带数据库如何操作,大家告诉我先把数据库拷到sd上,然后再操作,而且我也实践了,成功了
    大哥,你的理论能再说的详细点吗,我很感兴趣
      

  3.   

    不管数数据库默认存储在哪,我觉得你可以在程序里对原来的数据库和表进行更新,api里面不是有个SqliteOpenHelper类么?里面的OnUpgrade重写下就可以更新数据库了啊。
      

  4.   


    android中数据库默认是存放在手机内存中,默认在/data/data目录下面。
      

  5.   

     支持,数据库一般都放在这里,/data/data/包名/
      

  6.   


    到位!我的Helper类的OnUpgrade方法一直空着,怪不得我的数据库老是和apk里的不同步
      

  7.   

    private static String DB_PATH = "/data/data/com.shark/databases/";
    private static String DB_NAME = "sharkV5.db";//路径不变我把我的DBHelper修改了下 public DataBaseHelper(Context context) { super(context, DB_NAME, null, dbVersion);
    this.myContext = context;
    }//dbVersion是我给传的版本号,数据库每改动一次我就修改一下这个值 @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String DbPath = DB_PATH + DB_NAME;
       File file = new File(DbPath);
       if(file.exists())
       file.delete();
    }//对应的onUpgrade我也加入了内容