Android中SQLite数据库知识点总结

yizhihongxing

Android中SQLite数据库知识点总结

什么是SQLite数据库?

SQLite 是一种软件库,它提供了一种轻量级的嵌入式关系型数据库,适用于在不需要复杂的 MySQL 等数据库的场合下存储少量的本地数据。SQLite 集成在 Android 操作系统中,可以通过 API 轻松访问。

SQLite数据库的优势

  • 轻便:SQLite 数据库体积小,运行速度快,适用于轻量级应用的数据存储。
  • 无需服务端:SQLite 数据库是基于本地文件系统的嵌入式数据库,使用方便,无需服务端。
  • 可跨平台:SQLite 数据库支持移植性,支持多种操作系统,方便开发者进行跨平台应用程序的开发。

Android中SQLite数据库的基本使用

SQLite数据库主要通过SQL语言进行信息的操作。在Android中,我们可以通过SQLiteOpenHelper对数据库进行访问和操作,该类提供了创建,打开,更新和升级sqlite数据库等功能。下面是一个使用SQLiteOpenHelper类创建和升级数据库的示例代码:

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "mydatabase";  // 数据库名
    private static final int DATABASE_VERSION = 1;  // 数据库版本号

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表
        String sql = "CREATE TABLE user(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //数据库版本升级时被调用
        String sql = "DROP TABLE IF EXISTS user"; //删除表
        db.execSQL(sql);
        onCreate(db); //重新创建表
    }
}

SQLite数据库的基本操作

  • 插入数据:使用insert()方法向数据库中插入数据。下面是一段插入数据的示例代码:

    java
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("name", "Jack");
    values.put("age", 20);
    db.insert("user", null, values);

  • 更新数据:使用update()方法向数据库中更新数据。下面是一段更新数据的示例代码:

    java
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("name", "John");
    db.update("user", values, "name=?", new String[]{"Jack"});

  • 删除数据:使用delete()方法从数据库中删除数据。下面是一段删除数据的示例代码:

    java
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    db.delete("user", "name=?", new String[]{"Jack"});

  • 查询数据:使用rawQuery()方法查询数据。下面是一段查询数据的示例代码:

    java
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    Cursor cursor = db.rawQuery("select * from user", null);
    if (cursor.moveToFirst()) {
    do {
    String name = cursor.getString(cursor.getColumnIndex("name"));
    int age = cursor.getInt(cursor.getColumnIndex("age"));
    Log.d("MainActivity", "name:" + name + " age:" + age);
    } while (cursor.moveToNext());
    }
    cursor.close();

SQLite数据库的事务处理

SQLite数据库的事务处理主要使用beginTransaction()setTransactionSuccessful()endTransaction()三个方法配合使用来实现:

SQLiteDatabase db = dbHelper.getWritableDatabase();
try {
    db.beginTransaction(); //开启事务
    //执行一些SQL操作
    db.setTransactionSuccessful(); //设置事务成功
} finally {
    db.endTransaction(); //结束事务
}

使用事务处理可以将多次数据操作封装在一个事务中,提高数据操作的性能。

示例1:创建ToDoList任务清单数据库

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "todolist.db";  // 数据库名
    private static final int DATABASE_VERSION = 1;  // 数据库版本号

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建任务列表表
        String sql = "CREATE TABLE task_list (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, status INTEGER, create_time LONG, update_time LONG)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 数据库版本升级时被调用
        String sql = "DROP TABLE IF EXISTS task_list"; //删除表
        db.execSQL(sql);
        onCreate(db); //重新创建表
    }
}

在创建好DatabaseHelper类后,可以通过使用 getWritableDatabase() 方法获取一个可写的数据库对象,实现对数据库的操作。

示例2:将WebView的浏览记录存储在SQLite数据库中

WebView提供了WebBackForwardList类来管理浏览记录。我们可以通过监听WebView的onPageFinished事件,获取当前页面的URL并存储到SQLite数据库中。以下是示例代码:

private WebView webView;

private class MyWebViewClient extends WebViewClient {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("url", url);
        db.insert("history", null, values);
    }
}

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

    dbHelper = new DatabaseHelper(this);
    webView = findViewById(R.id.web_view);
    webView.setWebViewClient(new MyWebViewClient());
    webView.loadUrl("https://www.baidu.com/");
}

在这个例子中,我们创建了一个名为history的表来存储浏览历史记录,每次当一个页面被加载完毕时,将当前页面的URL插入到history表中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android中SQLite数据库知识点总结 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • springboot整合nacos,如何读取nacos配置文件

    Spring Boot 是一款快速开发框架,而 Nacos 是一个开源的分布式服务发现、配置管理和服务治理平台。将两者整合起来,可以快速实现一个可靠的分布式系统。下面是整合 Nacos 并读取配置文件的完整攻略: 1. 添加依赖 首先,在 Spring Boot 项目中,需要添加一些依赖以使其支持 Nacos。在 pom.xml 文件中添加以下依赖: &lt…

    database 2023年5月18日
    00
  • Java实现Redis的集合(set)命令操作

    下面是关于Java实现Redis的集合(set)命令操作的完整攻略: 1. 环境准备 安装Redis数据库,在本地启动Redis服务 在Java项目中引入jedis依赖 2. 初始化Jedis连接 首先需要初始化Jedis连接,通过以下代码创建一个Jedis连接对象: Jedis jedis = new Jedis("localhost"…

    database 2023年5月22日
    00
  • Linux下Oracle设置定时任务备份数据库的教程

    下面我就来详细讲解Linux下Oracle设置定时任务备份数据库的完整攻略: 一、前置条件 在进行设置定时任务备份数据库的过程中,需要满足以下前置条件: 已经搭建好了Oracle数据库环境,并且可以使用Oracle用户进行操作。 安装了crontab服务。 二、备份数据库的命令 在进行定时任务备份数据库之前,我们需要先了解备份数据库的命令。常用的备份数据库命…

    database 2023年5月22日
    00
  • Mysql学习之创建和操作数据库及表DDL大全小白篇

    Mysql学习之创建和操作数据库及表DDL大全小白篇 本文将详细讲解如何在Mysql中创建数据库和表以及DDL的常见操作。让读者能够轻松了解Mysql数据库的基本用法。 创建数据库 在Mysql中,要创建一个新的数据库,首先需要登录Mysql服务器,然后使用CREATE DATABASE命令。 CREATE DATABASE my_database; 上述代…

    database 2023年5月21日
    00
  • 详解记录MySQL中lower_case_table_names的坑

    详解记录MySQL中lower_case_table_names的坑 在 MySQL 中,lower_case_table_names 是一个非常重要的参数。它用于设置大小写敏感的表名是否被转换为小写。 设置 在 MySQL 的配置文件(my.cnf)中,可以通过以下方式对其进行设置: [mysqld] lower_case_table_names=1 它有…

    database 2023年5月18日
    00
  • SQL 创建垂直直方图

    下面是SQL创建垂直直方图的完整攻略: 什么是垂直直方图? 垂直直方图(Vertical Bar Chart) 是一种常用的数据可视化图表形式。它将数据以柱形的形式展现出来,柱形的高度表示相应数据的大小。垂直直方图通常用于显示不同类别的数据值,可以快速比较某些数据的差异。 通常,垂直直方图由两个元素组成: y轴:表示不同的数据点,即各种类别。 x轴:表示数据…

    database 2023年3月27日
    00
  • MySQL千万级数据表的优化实战记录

    MySQL千万级数据表的优化实战记录 简介 MySQL是目前互联网应用中最为流行的关系型数据库,在数据量持续增大的情况下,如何对数据表进行优化,提高查询和更新性能,是我们需要掌握的技能之一。本文介绍如何在千万级数据表的情况下进行MySQL的数据表优化。 优化方案 索引优化 在进行大量数据查询时,索引的重要性就显得尤为重要。索引能够大大提高查询的效率。但是,索…

    database 2023年5月22日
    00
  • CentOS下Redis数据库的基本安装与配置教程

    CentOS下Redis数据库的基本安装与配置教程 1. 安装Redis 在CentOS系统下安装Redis是十分简单的。只需使用系统默认的yum包管理工具即可完成。 打开终端并输入以下命令以更新yum: bash sudo yum update 安装redis: bash sudo yum install redis 安装完成后,可通过以下命令检查Redi…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部