一、SQLite数据库概述

1、SQLite构成

  • SQLite由SQL编译器、内核、后端以及附件几个部分构成。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使得调试、修改和扩展SQLite的内核变得更加方便,所有SQL语句都被编译成易读的、可以在SQLite虚拟机中执行的程序集。
  • SQLite的整体结构图如下:
    在这里插入图片描述

2、SQLite数据类型

类型说明
NULL空值
INTEGER整型值
REAL浮点值
TEXT字符串文本
BLOB二进制对象 [Binary Large Object]

3、SQLite数据库特点

  • 值得一提的是,袖珍型的SQLite竟然可以支持高达2TB大小的数据库,每个数据库都是以单个文件的形式存在,这些数据都是以B-Tree的数据结构形式存储在磁盘上。
  • 在事务处理方面,SQLite通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程想数据库执行写操作之前,必须获得独占锁。在获得独占锁之后,其他的读或写操作将不会再发生。
  • SQLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为“弱类型”。但有一个特例,如果是INTEGER PRIMARY KEY,则其他类型不会被转换,会报一个“datatype missmatch”的错误。
  • ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。

二、使用SQLiteDatabase类操作数据库

1、创建安卓应用

  • 基于EmptyActivity创建安卓应用【CreateDeleteDB】
    在这里插入图片描述

  • 单击【finish】按钮
    在这里插入图片描述

2、准备图片素材

  • 将背景图片拷贝到drawable目录
    在这里插入图片描述

3、字符串资源文件

  • 字符串资源文件strings.xml
    在这里插入图片描述
<resources>
    <string name="app_name">创建和删除数据库</string>
    <string name="create_db">创建数据库</string>
    <string name="delete_db">删除数据库</string>
</resources>

4、主布局资源文件

  • 主布局资源文件activity_main.xml
    在这里插入图片描述
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_create_db"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:onClick="doCreateDB"
        android:text="@string/create_db"
        android:textSize="20dp" />

    <Button
        android:id="@+id/btn_delete_db"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:onClick="doDeleteDB"
        android:text="@string/delete_db"
        android:textSize="20dp" />
</LinearLayout>

  • 查看预览效果
    在这里插入图片描述

5、主界面实现功能

  • 主界面类 - MainActivity
    在这里插入图片描述

  • 声明变量和常量
    在这里插入图片描述

  • 获取应用当前数据库个数
    在这里插入图片描述

  • 编写【创建数据库】
    在这里插入图片描述

  • 编写【删除数据库】
    在这里插入图片描述

  • 查看源代码

package net.zwj.creat_delete_db;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final String DB_NAME_PREFIX="student";
    private static final int MODE= Context.MODE_PRIVATE;
    private int count;
    private SQLiteDatabase db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取应用当前数据库个数
        count=databaseList().length;
    }

    /**
     *
     * @param view
     */
    public void doCreatDB(View view) {
        count++;
        String dbname = DB_NAME_PREFIX + count + "db";
        db = openOrCreateDatabase(dbname, MODE, null);
        try {
            Toast.makeText(this, "恭喜,数据库【" + dbname + "】创建成功", Toast.LENGTH_SHORT).show();
        } catch(Exception e){
            Toast.makeText(this, "恭喜,数据库【" + dbname + "】创建失败", Toast.LENGTH_SHORT).show();
        }
    }
    public void doDeletDB(View view){
        String[]dbnames=databaseList();
        if(dbnames.length>0){
            for (String dbname:dbnames){
                deleteDatabase(dbname);
            }
            count=0;
           Toast.makeText(this,"恭喜,数据库全部被删除!",Toast.LENGTH_SHORT).show();

        }else {
            Toast.makeText(this,"遗憾,没有数据库可删除!",Toast.LENGTH_SHORT).show();
        }
    }
}

6、启动应用,查看效果

在这里插入图片描述

7、知识点小结

方法作用
databaseList()获取数据库名称数组
openOrCreateDatabase(String name,int mode,CuysorFacory)打开或创建数据库
deleteDatabase(String name)删除数据库

三、使用SQLiteDatabase类操作数据表

1、创建安卓应用

  • 基于EmptyActivity创建安卓应用【OperateTable】

  • 单击【finish】按钮

2、准备图片素材

  • 将背景图片拷贝到drawable目录

3、字符串资源文件

  • 字符串资源文件strings.xml

4、主布局资源文件

  • 主布局资源文件activity_main.xml

5、主界面实现功能

  • 主界面类 - MainActivity

四、使用SQLiteDatabaseHelper类操作数据库与表

1、创建安卓应用

  • 基于EmptyActivity创建安卓应用【OperateTable】

  • 单击【finish】按钮

2、准备图片素材

  • 将背景图片拷贝到drawable目录

3、字符串资源文件

  • 字符串资源文件strings.xml

4、主布局资源文件

  • 主布局资源文件activity_main.xml

5、主界面实现功能

  • 主界面类 - MainActivity
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐