写一个类继承自 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 和addressString 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;";// 就能够了。上述的方法是一个通用的方法} }