Android SQLite
介绍
SQLite是Android内置的数据库,运算速度非常快,占用资源很少,支持标准的SQL语法,对于本地持久化的功能有质的提升
用法
Android为了方便管理数据库提供了一个SQLiteOpenHelper帮助类,这个呢是个抽象类,如若要使用它,则需继承它,则必须重写它的onCreate()和onUpgrade()方法,在这重写的方法中实现我们想要的逻辑。他还有另外两个常用且重要的方法,getReadableDatabase()和getWriteDatabase(),两个方法都能创建或打开一个数据库,如果数据库存在则直接打开,如果不存在则新建一个,二者的差别从他们的名字就能看出来吧,再数据库不可写入的时候,前者返回对象只能进行读操作,后者将不能使用即报异常。
重写构造函数的时候我们选择较简单的那种,其中包括四个参数,其一:Context,用膝盖想想为啥要传这个;其二:数据库名,用手肘想想为啥要传这个;其三:Cursor,这个的话是我们自定义的一个返回数据的封装,没事,待会儿你就懂了;其四:当前数据库的版本号,可用于对数据库进行升级操作。
实例
新建一个库和表
代码示例
新建一个类SQLite继承SQLiteOpenHelper,编写代码如下:
package com.example.sqlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class SQLite extends SQLiteOpenHelper {
private String create_student = "create table Student ("
+ "stu_id varchar primary key, "
+ "stu_name varchar, "
+ "stu_age integer)";
private Context mContext;
public SQLite(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_student);
Toast.makeText(mContext , "创建成功" , Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
这个代码看似复杂,实际上还行
建表的语句我就不多说了,稍微有点数据库基础都没问题;接下来Context也不说了;再然后,构造方法传入之前提到的四个变量,调用super给它的父亲也整一手,你不写这个它会报错的,然后将私有变量mContext赋值确定是哪个活动;重写方法onCreate执行SQL语句,然后成功后弹出提示信息;
编写修改activity_main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/create"
android:text="创建库和表"/>
</LinearLayout>
就一个按钮用于新建数据库以及那张表
编写修改MainActivity.java文件
package com.example.sqlite;
import androidx.appcompat.app.AppCompatActivity;