Android中SQLite数据库知识点总结

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日

相关文章

  • ZumoDrive和RapidShare

    ZumoDrive和RapidShare是两种不同类型的云存储服务,下面分别进行详细说明。 ZumoDrive 完整攻略 1. 什么是ZumoDrive? ZumoDrive是一个在线存储和备份数据的服务,它允许用户将数据存储在云端,并在多个设备之间共享。ZumoDrive最初是在2007年推出的,但由于竞争激烈,于2012年被购买。 ZumoDrive现在…

    database 2023年3月27日
    00
  • VMware中安装CentOS7(设置静态IP地址)并通过docker容器安装mySql数据库(超详细教程)

    VMware中安装CentOS7并设置静态IP 1. 下载CentOS7镜像 首先在官网下载CentOS7镜像,并在VMware虚拟机中新建一台CentOS7虚拟机,将镜像挂载到虚拟机中并启动。 2. 安装CentOS7系统 按照提示进行安装CentOS7系统,设置root密码和用户账号。 3. 设置静态IP 3.1 修改网络配置文件 切换至/etc/sys…

    database 2023年5月18日
    00
  • ubuntu19.04安装教程(图文步骤)

    针对”ubuntu19.04安装教程(图文步骤)”的完整攻略,我将分以下几个部分进行讲解: 准备工作 在安装Ubuntu19.04之前,需要一个可启动的Ubuntu19.04安装盘,这里我们可以通过两种方式来获取: 下载镜像文件进行制作:到Ubuntu官方网站(https://cn.ubuntu.com/)下载Ubuntu19.04的镜像文件,然后使用Ult…

    database 2023年5月22日
    00
  • 浅谈Transact-SQL

    浅谈Transact-SQL 简介 Transact-SQL(T-SQL)是一种面向关系数据库管理系统(RDBMS)的编程语言。它是Microsoft SQL Server的主要编程语言,可用于创建和修改数据库、执行查询和存储过程等操作。 T-SQL具有与标准SQL相同的语法。此外,它还包括更多的功能和语法元素,如存储过程、触发器、游标等,以支持高级编程。 …

    database 2023年5月21日
    00
  • MySQL explain 和 profiling 详解

    MySQL explain 和 profiling 详解 mysql explain MySQL 的 EXPLAIN 是一个用于查询优化的工具,它可以显示 MySQL 数据库如何执行查询。它返回一组关于查询执行计划的信息,包括用到的索引,表的连接顺序以及 MySQL 使用的查询类型。下面是 EXPLAIN 返回的列及其含义: id id:查询中每个 SELE…

    MySQL 2023年4月8日
    00
  • 解决JDBC连接Mysql长时间无动作连接失效的问题

    解决JDBC连接Mysql长时间无动作连接失效的问题,可以通过以下步骤进行: 1. 配置连接参数 在JDBC程序中,通过配置连接参数可以控制连接的一些属性,如连接超时时间、读取超时时间等。这些参数的配置可以通过使用DriverManager.getConnection方法,以url的形式配置。例如: String url = "jdbc:mysql…

    database 2023年5月22日
    00
  • MySql数据库时间序列间隔查询方式

    下面是详细的“MySql数据库时间序列间隔查询方式”的攻略。 1. 时间序列间隔查询方式的介绍 时间序列间隔查询方式,就是查询某一时间范围内的数据,并且这些数据是以时间为排序的。在MySQL数据库中,时间序列间隔查询通常使用的是BETWEEN…AND…和IN条件语句。 2. BETWEEN…AND…查询方式 BETWEEN…AND…查询方式用于查询某段时间范…

    database 2023年5月22日
    00
  • 如何使用Python在MySQL中创建表?

    要使用Python在MySQL中创建表,可以使用Python的内置模块sqlite3或第三方库mysql-connector-python。以下是使用mysql-connector-python在MySQL中创建完整攻略: 连接 要连接到MySQL,需要提供MySQL的主机、用户名、和密码。可以使用以下代码连接MySQL: mysql.connector m…

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