SQlite(1)——数据库的创建

简介

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;
/**
*
* @param context 上下文
* @param name 数据库名
* @param factory 不知道 一般填null
* @param version 数据库版本
*/
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
//MainActivity的oncreate方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取MyDatabaseHelper的实例
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,1);
Button button = findViewById(R.id.create_database);
//执行getWritableDatabase()方法
button.setOnClickListener(v-> dbHelper.getWritableDatabase());
}

在执行getWritableDatabase()方法后数据库被创建,但是个没表的新库,会自动生成一个android_metadata的table,与此同时,MyDatabaseHelper类中的onCreate()方法被执行。
getWritableDatabase()的返回值是一个SQLiteDatabase对象,在第二次执行getWritableDatabase()方法时数据库不会再被创建,onCreate()也不会再次执行,此时可以利用
SQLiteDatabase db = dbHelper.getWritableDatabase()来获取该数据库的实例,从而对数据库进行进一步操作(增删查改等)。

1