zoukankan      html  css  js  c++  java
  • sqlite自己主动更新数据库

    写一个类继承自  SQLiteOpenHelper

    系统会自己主动加入构造方法、 onCreate方法、onUpgrade方法

    当数据库里面数据或者表结构有所修改时。咱们须要升级数据库

    这个时候。版本号加1.在update里面做对应改动。

    须要注意的是,假设须要測试update,每次開始測试,version 值增大。假设和上次的同样。就不会促发update方法了

    以下贴上代码

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.widget.Toast;
    //第一版的时候,update里面的代码为空。由于不须要更新,之后版本号更新,就得在update里面写代码了

    public class DataHelp extends SQLiteOpenHelper {


    public static String name = "sxjj.db3";
    public static int version = 3;
    Context context = null;


    public DataHelp(Context context, String name, CursorFactory factory,
    int version) {


    super(context, name, null, version);
    this.context = context;
    }


    /**
    * 创建表
    */
    public void onCreate(SQLiteDatabase db) {
    // 更改表结构之前的
    // String sql_tansInfo =
    // "create table if not exists transInfo(id integer primary key autoincrement, name nvarchar(50), tel nvarchar(20), content text,type int )";
    // 更改表结构之后的,加入了两列。marker 和address
    String sql_tansInfo = "create table if not exists transInfo(id integer primary key autoincrement, name nvarchar(50), tel nvarchar(20), content text,type int,address text,marker text )";
    db.execSQL(sql_tansInfo);


    }


    /**
    * 更新表
    */
    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
    // 第一次执行。版本号加1的时候,触发这种方法了,下一次就不触发了,所以每次測试须要版本号号加1,正式公布不须要


    // 1创建新表
    String sql_create_tansInfo = "create table if not exists transInfo_new(id integer primary key autoincrement, name nvarchar(50), tel nvarchar(20), content text,type int,address text,marker text )";


    db.execSQL(sql_create_tansInfo);


    // 2 删除旧表
    String sql_drop_oldTable = "drop table transInfo";
    db.execSQL(sql_drop_oldTable);


    // 3表新表的名字改成旧表的名字
    String sql_rename = "ALTER TABLE  transInfo_new RENAME TO transInfo";
    db.execSQL(sql_rename);


    // 提示更新了,正式公布可去掉这一句提示
    Toast.makeText(context, "更新---------", 1).show();


    // 注:假设仅仅是添加一列,事实上不须要创建新表。
    // 运行 String sql="ALTER TABLE transInfo ADD COLUMN address text;";
    // 就能够了。上述的方法是一个通用的方法


    }


    }


  • 相关阅读:
    Java并发编程:同步容器
    poj 1961 Period
    html与JacaScript中的重要思想:预留后路、向后兼容、js分离
    SQL从头開始
    android帧动画,移动位置,缩放,改变透明度等动画解说
    COCOS学习笔记--Cocod2dx内存管理(三)-Coco2d-x内存执行原理
    构建基于Javascript的移动CMS——生成博客(二).路由
    Oracle 单表选择率
    刚接触Joomla,写一下瞎折腾的初感受~
    Android学习笔记之ProgressBar案例分析
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6889300.html
Copyright © 2011-2022 走看看