public class MySQLiteHelper extends SQLiteOpenHelper {            public static final String <span style="font-family: Arial, Helvetica, sans-serif;">SQL_CREATE</span><span style="font-family: Arial, Helvetica, sans-serif;">= "create table news ("  </span>            + "_id integer primary key autoincrement, "              + "nametext, "              + "agetext, )";        public MySQLiteHelper(Context context, String name, CursorFactory factory,              int version) {          super(context, name, factory, version);      }        @Override      public void onCreate(SQLiteDatabase db) {          db.execSQL(SQL_CREATE);     }        @Override      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {      }    } 
当我们如上创建了个SQLiteHelper,我们知道会在本地的目录database中生成了个.db数据库文件! 可是我们遇到版本迭代往往要做更多的事情 这时候的会再创建个新的数据库
这时候我们编译完成之后发现没有在database相对应的目录下生成一个相对应的表。当然我们在调试代码的时候可以清楚应用数据这样重新运行的时候会把onCreate方法再次执行一次那当然就会把未生成成功的表生成出来,可以在用户迭代更新应用的时候总不能每次都清楚数据是吧! 所以:
<pre name="code" class="java">@Override  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    onCreate(db);  } 
主要思路就是更新version,就是说你用户现有装的app上version是1的时候,在迭代版本更新的时候要更新version为>1的值 这样我们在new MySQLiteHelper() 的时候就会执行onUpgrade()方法,然后在在该方法中写入相对应的操作就会在database下生产相对应的表而不需要用户去清除应用的数据。
  
  
当然这种方法有一个很严重的弊端就是  可能我们在发布版本的时候忘记修改该version导致无法操作数据引起一系列不可收拾的bug。 所以推荐使用LitePal开源库进行对数据库操作!详情可见  <a target=_blank href="http://http://blog.csdn.net/guolin_blog/article/details/39151617">点击打开链接</a>

更多相关文章

  1. Android SDK版本号与API Level及VERSION_CODE的对应关系
  2. android sdk 版本以及对应 API level
  3. android直接读取数据库文件
  4. android listview无限循环显示数据
  5. android studio 修改jdk默认编译版本
  6. android 加密数据库
  7. android SD 卡写操作
  8. android 数据库
  9. android各个版本的区别——API变更

随机推荐

  1. 自定义 Android(安卓)对话框 (AlertDialo
  2. Android屏幕适配全攻略(最权威的官方适配
  3. Android应用构建过程解析
  4. Android艺术开发探索第四章——View的工
  5. 我为什么用Android(安卓)手机而不用 iPho
  6. kotlin 协程在 Android(安卓)中的使用—
  7. android通过辅助功能收集数据
  8. 手把手的教你成为Android高手(视频+源码+
  9. Android之应用资源的调用
  10. Android、iPhone和Java三个平台一致的加