安卓编程基础——使用SQLite数据库

目录

前言

零、本讲学习目标

一、导入新课

二、新课讲解

(一)SQLite数据库

1、SQLite构成

2、SQLite数据类型

3、SQLite数据库特点

(二)使用SQLiteDatabase类操作数据库

1、创建安卓应用

2、准备图片素材

3、字符串资源文件

4、主布局资源文件

5、主界面类实现功能

6、启动应用,查看效果

7、查看数据库文件

总结


前言

  • 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。

零、本讲学习目标

  1. 能使用SQLiteDatabase类操作数据库与表
  2. 能使用SQLiteDatabaseHelper类操作数据库与表

一、导入新课

  • 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。

二、新课讲解


(一)SQLite数据库


1、SQLite构成


SQLite由SQL编译器、内核、后端以及附件几个部分构成。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使得调试、修改和扩展SQLite的内核变得更加方便,所有SQL语句都被编译成易读的、可以在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、创建安卓应用

  • 基于Empty Activity模板创建安卓应用 - CreateDeleteDB

单击【Finish】按钮
 

2、准备图片素材

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

3、字符串资源文件

  • 字符串资源文件 - strings.xml

    创建和删除数据库
    创建数据库
    删除数据库

4、主布局资源文件

  • 主布局资源文件 - activity_main.xml



    

5、主界面类实现功能

  • 主界面类 - MainActivity
package net.hw.create_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; // SQLite数据库对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 利用布局资源文件设置用户界面
        setContentView(R.layout.activity_main);

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

    /**
     * 创建数据库
     * 数据库位置:/data/data/net.hw.create_delete_db/databases
     * @param view
     */
    public void doCreateDB(View view) {
        // 数据库计数器累加
        count++;
        // 定义数据库名
        String dbname = DB_NAME_PREFIX + count + ".db";
        try {
            // 打开或创建数据库
            db = openOrCreateDatabase(dbname, MODE, null);
            // 提示用户创建成功
            Toast.makeText(this, "恭喜,数据库【" + dbname + "】创建成功!", Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            // 提示用户创建失败
            Toast.makeText(this, "遗憾,数据库【" + dbname + "】创建失败!", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 删除数据库(删除全部数据库)
     *
     * @param view
     */
    public void doDeleteDB(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、启动应用,查看效果

  • 创建5个数据库,然后全部删除,最后又创建了三个数据库。

7、查看数据库文件

  • 在设备文件浏览器里 - /data/data/net.hw.create_delete_db/databases

安卓编程基础——使用SQLite数据库_第1张图片

 

 有三个我们刚才创建的数据库

 

 

总结

  • 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。

你可能感兴趣的:(android,android,studio,1024程序员节)