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日

相关文章

  • MySQL的自增ID(主键) 用完了的解决方法

    MySQL中的自增ID(主键)是表中记录的唯一标识符,它有时也被称为自动增量。但在使用自增ID时,有可能遇到自增ID用完的情况,这种情况下,系统可能会出现无法添加新记录的情况。本文将详细介绍使用MySQL的自增ID(主键)时遇到用完的解决方法。 方法一:修改自增ID的起始值 MySQL中可通过修改自增ID的起始值来解决这个问题。使用以下命令即可修改表格中的某…

    database 2023年5月21日
    00
  • postgresql数据库配置文件postgresql.conf,pg_hba.conf,pg_ident.conf

    PostgreSQL是一款功能强大的关系型数据库,它的配置文件主要有postgresql.conf、pg_hba.conf以及pg_ident.conf三个。其中postgresql.conf是PostgreSQL的主要配置文件,它提供了大量可配置的选项用来控制数据库系统的行为,pg_hba.conf和pg_ident.conf则主要关注在安全性方面。 下面…

    database 2023年5月22日
    00
  • 如何使用Python在MySQL中使用存储引擎?

    在MySQL中,存储引擎是一种用于管理表的机制。在Python中,可以使用MySQL连接来执行存储引擎查询和设置。以下是在Python中使用存储引擎的完整攻略,包括存储引擎的基本语法、使用存储引擎的示例以及如何在Python中使用存储引擎。 存储引擎的基本语法 在MySQL中,可以使用CREATE TABLE语来创建表,并使用ENGINE关键字指定的存储引擎…

    python 2023年5月12日
    00
  • MongoDB删除集合

    删除MongoDB中的集合可以使用db.collection.drop()方法。这个方法可以接收一个留给可选参数的布尔值,指定是否完成删除集合的同时也删除了它的索引。 下面是删除一个名为 ‘myColl’ 的集合的代码示例: db.myColl.drop() 如果需要强制删除操作,则可以使用{force:true}选项: db.myColl.drop({fo…

    MongoDB 2023年3月14日
    00
  • SpringBoot搭建多数据源的实现方法

    下面我将为您详细讲解“SpringBoot搭建多数据源的实现方法”的完整攻略。 1. 首先要了解多数据源 多数据源指的是应用程序连接到多个不同数据库的能力。在实际应用中,往往涉及到多种类型的数据存取,例如关系型数据库(如MySQL、Oracle),NoSQL数据库(如MongoDB、Redis)和文件系统(如HDFS)。在多数据源应用中,我们需要处理多个数据…

    database 2023年5月21日
    00
  • centos 5 手动分区来安装系统的方法

    下面是详细讲解“centos 5 手动分区来安装系统的方法”的完整攻略。 1. 准备工作 在开始手动分区来安装CentOS 5之前,需要做一些准备工作: 下载并制作CentOS 5安装盘或者USB启动盘 准备一台能够直接安装CentOS的计算机 确保你了解你的硬件规格,包括硬盘大小等 2. 启动安装程序 将制作好的CentOS 5安装盘或者USB启动盘插入计…

    database 2023年5月22日
    00
  • SQL – UPDATE 语句

    SQL的UPDATE语句用于修改数据库中的数据,它可以更新一条或多条记录。下面详细讲解SQL-UPDATE语句的完整攻略: UPDATE语法 UPDATE 表名 SET 字段名1=值1, 字段名2=值2, 字段名3=值3… WHERE 条件; 说明: 表名:需要修改的表名。 SET:设置需要更新的字段和字段的值。 字段名:需要更新的字段名。 值:对应字段…

    database 2023年3月27日
    00
  • Python线程下使用锁的技巧分享

    Python线程下使用锁的技巧分享 在Python多线程编程中,如果多个线程同时对同一资源进行读写操作时,常常会出现数据不一致的问题。这时候就需要用到锁来解决问题。本文将介绍Python线程下使用锁的技巧。 理解锁 锁是一种同步机制,它可以保证同一时刻只有一个线程可以访问保护的共享资源。 Python中的锁是通过threading模块实现的。主要有两种锁的类…

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