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日

相关文章

  • MySQL5.7更改密码时出现ERROR 1054 (42S22)的解决方法

    当我们在MySQL5.7版本下更改密码时,有时会遇到ERROR 1054 (42S22)的情况。如果出现这种错误,我们需要采取以下步骤进行解决: 问题背景: 在MySQL5.7版本下更改密码时,会执行下列语句: mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘new_password’; 但是在执…

    database 2023年5月18日
    00
  • C#爬虫通过代理刷文章浏览量

    下面我来详细讲解一下“C#爬虫通过代理刷文章浏览量”的攻略。 1. 准备工作 在开始前,需要安装好以下软件: Visual Studio 2017或以上版本 .NET Core 2.0或以上版本 Nuget包管理器 2. 获取代理IP 我们需要先获取一些可用的代理IP,这里我以https://www.xicidaili.com/为例。 在该网站中,我们可以选…

    database 2023年5月22日
    00
  • rman备份脚本和rman增量备份脚本分享

    RMAN是Oracle官方提供的备份和恢复工具,在数据库备份和恢复方面有着很好的性能和稳定性。因此,Oracle管理员必须掌握RMAN备份和恢复技术。下面是分享两个常用的RMAN备份脚本。 1. RMAN全备份脚本 RMAN全备份脚本是备份整个数据库,包括数据文件、控制文件、归档日志。这个脚本要求在每次备份之前手动修改备份目录、备份标签和备份后是否自动清除过…

    database 2023年5月22日
    00
  • DBMS 实体关系图

    DBMS(数据库管理系统)是管理和组织数据的软件。在DBMS中,实体关系图(Entity-Relationship Diagram,简称ERD)是设计数据库的重要工具。下面将详细讲解ERD的完整攻略,包括什么是实体关系,如何绘制ERD以及一些实例说明。 实体关系 在ERD中,实体指的是存储数据的对象,例如学生、课程、教师等。每个实体在ERD中用一个矩形表示,…

    database 2023年3月27日
    00
  • MySQL算术/比较/逻辑/位/运算符与正则举例详解

    MySQL算术运算符 MySQL提供了常见的算术运算符,包括加、减、乘、除和取余。 运算符 描述 + 加法 – 减法 * 乘法 / 除法 % 取余操作 示例代码 SELECT 10+5; — 输出 15 SELECT 10-5; — 输出 5 SELECT 10*5; — 输出 50 SELECT 10/5; — 输出 2 SELECT 10%3; …

    database 2023年5月22日
    00
  • pymysql 插入数据 转义处理方式

    当使用pymysql向MySQL数据库中插入数据时,需要注意字符串中可能含有引号、单引号、反斜杠等特殊字符,这些字符可能导致SQL语句语法出现错误。为了避免这种情况,需要使用转义处理方式,将特殊字符转换为可以被SQL语句安全接收的形式。 以下是pymysql插入数据的转义处理方式: 使用pymysql.escape_string()函数 pymysql.es…

    database 2023年5月22日
    00
  • 解决navicat连接不上linux服务器上的mysql问题

    问题描述: Navicat是一款非常流行的数据库管理工具,但是在连接Linux服务器上的MySQL时,可能会出现连接不上的问题。这个问题该怎么解决呢? 解决方案: Step 1:确认MySQL服务已启动 在Linux服务器上输入以下命令,确认MySQL服务是否已经启动: systemctl status mysql 如果MySQL服务处于停止状态,则需要手动…

    database 2023年5月22日
    00
  • Python连接Redis的基本配置方法

    当你要在Python中连接Redis数据库时,需要按照以下步骤进行配置: 步骤一:安装redis-py 如果你还没有安装Redis的Python客户端库redis-py,可以使用以下命令进行安装: pip install redis 步骤二:连接Redis 连接Redis需要指定Redis数据库的主机名、端口号和密码等参数,代码如下: import redi…

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