Android编程操作嵌入式关系型SQLite数据库实例详解

Android编程操作嵌入式关系型SQLite数据库实例详解

什么是SQLite数据库

SQLite是一种轻型的关系型数据库。与其他数据库不同,SQLite是嵌入式的数据库,它不需要独立的服务器进程或配置,而直接读取或写入普通文件。这使得SQLite非常适用于需要轻量级、快速、可靠的数据存储和检索的场景,包括Android应用。

在Android中使用SQLite数据库

Android提供了一个SqliteOpenHelper类,该类封装了SQLite数据库文件的创建和升级,以及查询数据库的方法,使得直接在Android应用中使用SQLite数据库变得容易。

创建一个SQLite数据库

首先要创建一个继承自SqliteOpenHelper类的Java类,并实现它的onCreate()和onUpgrade()方法。在onCreate()方法中,你可以定义数据库表,如下面的示例:

public class MyDatabaseHelper extends SQLiteOpenHelper {
    public static final String DB_NAME = "mydatabase.db";
    public static final int DB_VERSION = 1;

    public MyDatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS person (" +
                "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "name TEXT, " +
                "age INTEGER)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS person");
        onCreate(db);
    }
}

在上面的示例中,我们定义了一个名为person的表,该表包含三个字段:_id、name和age。

插入数据

要向数据库中插入数据,需要获取可写的SQLiteDataBase对象。通过ContentValues对象封装数据,然后调用insert()方法即可。示例代码如下:

SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "张三");
values.put("age", 18);
db.insert("person", null, values);

在上面的示例中,我们向person表插入了一条记录,其中name为“张三”,age为18。

查询数据

要查询数据库中的数据,需要获取可读的SQLiteDataBase对象,在调用query()方法进行查询。示例代码如下:

SQLiteDatabase db = myDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query("person", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
    do {
        int id = cursor.getInt(cursor.getColumnIndex("_id"));
        String name = cursor.getString(cursor.getColumnIndex("name"));
        int age = cursor.getInt(cursor.getColumnIndex("age"));
    } while (cursor.moveToNext());
}
cursor.close();

在上面的示例中,我们查询了person表中的所有数据,并将_id、name和age分别赋值给了变量id、name和age。

示例说明

下面通过两个简单的示例来演示在Android中操作SQLite数据库的过程:

示例1:创建学生表,插入数据

public class MyDatabaseHelper extends SQLiteOpenHelper {
    public static final String DB_NAME = "mydatabase.db";
    public static final int DB_VERSION = 1;

    public MyDatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS student (" +
                "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "name TEXT, " +
                "number TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS student");
        onCreate(db);
    }
}

在MainActivity的onCreate方法中实例化MyDatabaseHelper对象,并向student表中插入一条学生记录,代码如下:

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

    MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put("name", "张三");
    values.put("number", "1001");

    db.insert("student", null, values);
}

示例2:查询学生表,并将结果显示到ListView中

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

    MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
    SQLiteDatabase db = dbHelper.getReadableDatabase();

    Cursor cursor = db.query("student", null, null, null, null, null, null);
    List<String> list = new ArrayList<>();
    if (cursor.moveToFirst()) {
        do {
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String number = cursor.getString(cursor.getColumnIndex("number"));
            String result = "姓名:" + name + " 学号:" + number;
            list.add(result);
        } while (cursor.moveToNext());
    }
    cursor.close();

    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, list);
    ListView listView = findViewById(R.id.list_view);
    listView.setAdapter(adapter);
}

在上面的示例中,我们调用query()方法查询student表,并将结果存储在List list中,然后使用ArrayAdapter将查询结果填充到ListView中。

以上就是在Android应用中操作SQLite数据库的完整攻略了,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android编程操作嵌入式关系型SQLite数据库实例详解 - Python技术站

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

相关文章

  • JavaScript中连接操作Oracle数据库实例

    连接操作Oracle数据库实例可以使用Node.js的包管理器npm(Node Package Manager)中的oracledb库。oracledb是由Oracle Corporation提供的官方Node.js驱动程序,它支持连接Oracle Database 11.2、12.1、12.2、18c和19c。接下来我们将详细介绍如何使用oracledb在…

    database 2023年5月21日
    00
  • 解决Mybatis 大数据量的批量insert问题

    针对解决Mybatis 大数据量的批量insert问题,我可以提供如下完整攻略: 问题背景 在进行MyBatis数据库操作时,大数据量的insert操作可能会存在性能问题。当我们需要插入大量数据时,如果每次执行单条insert操作,那么就需要频繁连接数据库,导致程序的执行效率低下。因此,批量insert操作是提升系统性能的重要手段。 解决方案 为了解决这个问…

    database 2023年5月18日
    00
  • mysql 8.0.13 安装配置图文教程

    MySQL 8.0.13 安装配置图文教程 1. 下载安装包 首先,我们需要前往MySQL官网下载MySQL 8.0.13的安装包。下载完成后,我们进行解压。 2. 安装MySQL 在解压完成后,进入解压后的文件夹,在命令行中输入以下命令,安装MySQL: sudo dpkg -i mysql-community-client_8.0.13-1ubuntu1…

    database 2023年5月18日
    00
  • Python中使用Flask、MongoDB搭建简易图片服务器

    以下是使用Flask及MongoDB搭建简易图片服务器的完整攻略: 环境准备 在开始之前,需要首先安装好Python、Flask和MongoDB。其中,Python的版本要在3.6以上,Flask和MongoDB可以使用pip进行安装。 创建Flask应用 首先,在Python中新建一个Flask应用,通过以下代码实现: from flask import …

    database 2023年5月22日
    00
  • mysql进阶知识

    一.存储引擎 引擎 指的是一个系统的核心部分 引擎有不同分类是为了适应不同的使用场景 查看mysql支持所有引擎 show engines; MRG_MYISAM 是一堆MYISAM表的集合 用于做水平分表,如果一个表中数据量太大 将导致效率降低 水平分表就是把整个大表拆成不同的小表,每一次查询 会判断数据在哪一个表中 然后对应去查找 以此来提高效率 nam…

    MySQL 2023年4月16日
    00
  • 使用docker创建和运行跨平台的容器化mssql数据库

    以下是使用docker创建和运行跨平台的容器化mssql数据库的攻略: 确定需求 首先确定你的需求,如数据库的版本、端口号、镜像名称等。例如,我们需要运行Microsoft SQL Server Express 2019版本的数据库,端口号为1433,镜像名称为mcr.microsoft.com/mssql/server:2019-latest. 安装和配置…

    database 2023年5月22日
    00
  • MySQL触发器基本用法详解【创建、查看、删除等】

    MySQL触发器基本用法详解 什么是MySQL触发器? MySQL触发器是在MySQL数据库中,针对某些特定事件(如插入、更新、删除等)所定义的自动执行的程序或函数。当这些事件发生时,触发器就会执行,通常用于自动化操作或者记录日志。 创建触发器 创建触发器语法: CREATE TRIGGER trigger_name {BEFORE|AFTER} {INSE…

    database 2023年5月22日
    00
  • MySQL5.7慢查询日志时间与系统时间差8小时原因详解

    首先让我们来了解一下MySQL5.7慢查询日志时间与系统时间差8小时的原因。 在MySQL5.7中,慢查询日志时间戳是以UTC(世界协调时)时间保存的,而不是以本地时间保存。而系统的时间戳是根据服务器所在时区的本地时间保存的。这就导致了慢查询日志时间与系统时间相差8个小时(如果服务器所在的时区是中国北京,则相差为8小时)。 那么,如何解决这个问题呢?我们可以…

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