一.创建数据库
①:SQLiteOpenHelper类
步骤:先构建出实例,再调用getRead或者getWrit创建数据库。
构造方法接收4个参数,1.Context 2.数据库名 3.null(自定义Cursor) 4.数据库版本号。
onCreate(),onUpgrade()两个抽象方法和getReadableDatabase()和getWritableDatabase()实例方法。
<onCreate(),onUpgrade()两个抽象方法需要在自己的帮助类去重写,分别实现创建,升级数据库的逻辑。
<getReadableDatabase()和getWritableDatabase()分别是创建或打开一个数据库。
代码如下所示:
1.自定义一个MyDatabaseHelper类去继承SQLiteOpenHelper。
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class MyDatabaseHelper extends SQLiteOpenHelper{
public static final String CREATE_BOOK = "create table Book("
+ "id integer primary key autoincrement, "
+ "author text,"
+ "price real,"
+ "pages integer,"
+ "name text)";
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);
Toast.makeText(mcontext, "Create successed",Toast.LENGTH_LONG).show();
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
2.布局上我们设置一个按钮就行,并且在主函数上实现创建数据库功能
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,1);
Button createDatabase = findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbHelper.getWritableDatabase();
}
});
}
}
创建一个数据库就如上所示啦,接来下我们要实现升级数据库。
二.升级数据库
在此次升级中我们要加入一个Category表。
1.首先把加入下列程序:
public static final String CREATE_CATEGORY ="create table Category("
+ "id integer primary key autoincrement,"
+ "category_name text,"
+ "category_code integer)";
2.在Oncreate()中加入
db.execSQL(CREATE_CATEGORY);
3.在onUpgrade()中加入
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
onCreate(db);
}
4.最后在MainActivty中更新版本号
dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,2);