「Android 数据库」关系型数据库 SQLIt 详解

「Android 数据库」关系型数据库 SQLIt 详解

技术教程gslnedu2024-12-23 9:17:3313A+A-

Android 内置了一个名为 SQLite关系型数据库,这是一款轻量型数据库操作十分简便

SQLite与别的数据库不同的是,它没有数据类型。可以保存任何类型的数据到你所想要保存的任何表的任何列中。但它又支持常见的类型比如: NULL, VARCHAR, TEXT, INTEGER, BLOB, CLOB…等。

  • 唯一的例外是:integer primary key 此字段只能存储64位整数。
  • JAVA项目中,要使用JDBC操作数据库需要加载数据库驱动,连接数据库等操作
  • Android简化了我们的数据库操作,无需由我们进行数据库驱动加载、连接等操作。

关系型数据库 SQLIte 简介

每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite

SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。

  • SQLite数据库是一种用于手机app的轻量型数据库;
  • Android系统封装了一个类:SqliteOpenHelper(它是抽象类)是主要用来使用的SQLite的
  • 但实际使用SQLite数据有更加方便与便捷的方法:Room三角色的创建;

创建数据库

  • Activity_main.java
  • Activity_main.xml
  • MySQLiteOpenHelper.java

Activity_main.java

package com.example.sqlite;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    /**
     * 生成数据库:database
     * @param view
     */
    public void create_base(View view) {
        SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
        //数据库的创建,靠下面下面这个代码,和这句一样:helper.getWritableDatabase();
        SQLiteDatabase read = helper.getReadableDatabase();

    }
}

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="生成数据库"
        android:onClick="create_base"/>

</LinearLayout>

MySQLiteOpenHelper.java

package com.example.sqlite;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;

/**
 * MysqliteOpenHelper 工具类 单例模式(1,构造函数私有化 2,对外提供函数)
 */
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    //1.构造函数私有化
    private MySQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    //2.提供外部函数
    private static SQLiteOpenHelper mInstance;
    public static synchronized SQLiteOpenHelper GetmInstance(Context context){
        if (mInstance == null){
            //数据库名字叫“basedata.db”
            mInstance = new MySQLiteOpenHelper(context,"basedata.db",null,1);
        }
        return mInstance;
    }



    //初始化数据库时使用
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        

    }
    //数据库升级时使用
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

下面介绍几个在SQLite中常用到的adb命令:

查看

.database 显示数据库信息; .tables 显示表名称; .schema 命令可以查看创建数据表时的SQL命令; .schema table_name 查看创建表table_name时的SQL的命令;

插入记录

insert into table_name values (field1, field2, field3...);

查询

select * from table_name;查看table_name表中所有记录; select * from table_name where field1='xxxxx'; 查询符合指定条件的记录;

删除

drop table_name; 删除表; drop index_name; 删除索引;

# sqlite3 stu_db sqlite3 stu_db SQLite version 3.6.22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .schema .schema CREATE TABLE android_metadata (locale TEXT); CREATE TABLE stu_table(id int,sname varchar(20),sage int,ssex varchar(10)); --->创建的表 sqlite> select * from stu_table; select * from stu_table; 1|xiaoming|21|male sqlite>

插入数据

sqlite> insert into stu_table values(2,'xiaohong',20,'female');

插入的数据记得要和表中的属性一一对应

insert into stu_table values(2,'xiaohong',20,'female'); sqlite> select * from stu_table; select * from stu_table; 1|xiaoming|21|male 2|xiaohong|20|female --------------> 插入的数据 sqlite>

当点击修改数据的按钮时候

sqlite> select * from stu_table; select * from stu_table; 1|xiaoming|23|male -------------->年龄被修改为23 2|xiaohong|20|female sqlite>

当点击删除数据的按钮

sqlite> select * from stu_table; select * from stu_table; 1|xiaoming|23|male id=2的数据已经被删除

总之,我们可以在代码中执行数据库的增删改查,也可以在adb命令行下实现。 不过因为SQLite没有客户端,不能直接的查看数据库变化后的信息,所以常用adb命令行查看数据库改变后的信息。

关系型数据库 SQLIte 功能特性

  • ACID事务
  • 零配置 – 无需安装和管理配置
  • 储存在单一磁盘文件中的一个完整的数据库
  • 数据库文件可以在不同字节顺序的机器间自由的共享
  • 支持数据库大小至2TB
  • 足够小, 大致13万行C代码, 4.43M
  • 比一些流行的数据库在大部分普通数据库操作要快
  • 简单, 轻松的API
  • 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
  • 良好注释的源代码, 并且有着90%以上的测试覆盖率
  • 独立: 没有额外依赖
  • 源码完全的开源, 你可以用于任何用途, 包括出售它
  • 支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等

有需要文中代码的同学,可以顺手给我点赞评论支持一下

获取方式:私信发送“底层源码” 即可 免费获取;现在私信还可获取一份 Android 开发系统学习资料笔记

PS:有问题欢迎指正,可以在评论区留下你的建议和感受;

欢迎大家点赞评论,觉得内容可以的话,可以转发分享一下

点击这里复制本文地址 以上内容由朽木教程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

朽木教程网 © All Rights Reserved.  蜀ICP备2024111239号-8