简介
Android自带了SQLite数据库,这一篇主要讲SQlite数据库的创建以及自己的一些总结
创建一个数据库
SQlite 的创建需要如下步骤:
- 自定义继承
SQLiteOpenHelper
的子类
- 获取该类的实例
- 调用
getWritableDatabase()
方法
自定义继承SQLiteOpenHelper
的子类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.agno3.databasetest;
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper extends SQLiteOpenHelper {
private Context mContext;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); this.mContext = context; } @Override public void onCreate(SQLiteDatabase db) { }
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
|
获取该类的实例以及创建数据库
1 2 3 4 5 6 7 8 9 10 11
| protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyDatabaseHelper dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,1); Button button = findViewById(R.id.create_database); button.setOnClickListener(v-> dbHelper.getWritableDatabase()); }
|
在执行getWritableDatabase()方法后数据库被创建,但是个没表的新库,会自动生成一个android_metadata
的table,与此同时,MyDatabaseHelper类中的onCreate()
方法被执行。
getWritableDatabase()的返回值是一个SQLiteDatabase对象,在第二次执行getWritableDatabase()方法时数据库不会再被创建,onCreate()
也不会再次执行,此时可以利用
SQLiteDatabase db = dbHelper.getWritableDatabase()
来获取该数据库的实例,从而对数据库进行进一步操作(增删查改等)。