Android_6.数据存储_3_SQLite存储之升级数据库
2018-05-29 本文已影响2人
zhang_yongfeng
本文是以Android Studio为开发工具,<<第一行代码Anroid第2版>> 为学习指导书籍的学习记录
6.4.2 升级数据库
使用MyDatabaseHelper中的onUpgrade()方法,对数据库进行升级操作
要实现的内容:
在DatabaseTest项目(上一篇内容)中已经有一张Book表,现在再添加一张表进数据库
修改上节中MyDatabaseHelper类如下:
package com.zyf.android.databasetest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class MyDatabaseHelper extends SQLiteOpenHelper {
//创建表sql语句
public static final String CREATE_BOOK = "create table Book("
+ "id integer primary key autoincrement,"
+ "author text,"
+ "price real,"
+ "pages integer,"
+ "name text)";
public static final String CREATE_CATEGOTY = "create table Category("
+ "id integer primary key autoincrement,"
+ "category_name text,"
+ "category_code integer)";
private Context mContext;
public MyDatabaseHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,
int version){
super(context,name,factory,version);
mContext =context;
}
//抽象方法
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGOTY);//创建数据库表
Toast.makeText(mContext,"create succeeded", Toast.LENGTH_SHORT).show();
}
//抽象方法(升级方法)
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists Book");//如果已经存在的Book表,就删掉重新创建
db.execSQL("drop table if exists Category");
onCreate(db);
}
}
Snip20180529_5.png
修改MainActivity类如下;
package com.zyf.android.databasetest;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,3);
Button createDatabase = (Button) findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbHelper.getWritableDatabase();
}
});
}
}
Snip20180529_6.png
运行代码,点击按钮,用adb 和sqlite3 查看数据库中的表
Snip20180529_2.png写在最后
本示例源码下载百度云地址