当前位置:首页 > 编程技术 > 正文内容

Android与iOS应用中SQLite数据库的存取与修改操作

yc8887个月前 (04-03)编程技术219

Android与iOS应用中SQLite数据库的存取与修改操作

SQLite作为一款轻量级、嵌入式的关系型数据库管理系统,被广泛应用于移动开发领域,包括Android和iOS操作系统。它允许开发者在本地存储大量结构化数据,提供高效的数据查询和管理功能。本文将深入探讨如何在Android和iOS平台上分别调用SQLite进行数据的存取与修改操作。

一、Android平台上的SQLite操作

1. 创建SQLite数据库与表

在Android中,通常我们会创建一个继承自SQLiteOpenHelper的类来管理和操作数据库。以下是一个简单的示例:

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "myDatabase.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 createTableQuery = "CREATE TABLE myTable (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT)";
        db.execSQL(createTableQuery);
    }

    // 更新数据库版本时调用的方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 在这里执行升级数据库的逻辑
    }

    // 插入数据
    public long insertData(String title, String content) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("title", title);
        values.put("content", content);
        return db.insert("myTable", null, values);
    }

    // 查询数据
    public Cursor queryData() {
        SQLiteDatabase db = getReadableDatabase();
        String[] projection = {"_id", "title", "content"};
        return db.query("myTable", projection, null, null, null, null, null);
    }

    // 更新数据
    public int updateData(long id, String newTitle, String newContent) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("title", newTitle);
        values.put("content", newContent);
        return db.update("myTable", values, "_id = ?", new String[]{String.valueOf(id)});
    }

    // 删除数据
    public int deleteData(long id) {
        SQLiteDatabase db = getWritableDatabase();
        return db.delete("myTable", "_id = ?", new String[]{String.valueOf(id)});
    }
}


2. 使用SQLite API进行数据存取

如上述代码所示,在Android中,我们首先创建数据库及表结构,然后通过insert()query()update(), 和 delete()等SQLite API方法来实现数据的增删查改。

二、iOS平台上的SQLite操作

1. 导入SQLite库

虽然iOS原生支持SQLite,但为了简化操作,通常会选择第三方库如FMDB来封装SQLite API。以下是一个使用FMDB进行操作的例子:

import FMDB

class DatabaseManager {
    let databasePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
    let databaseName = "myDatabase.sqlite"
    var db: FMDatabase?

    func openDatabase() -> Bool {
        let path = "\(databasePath)/\(databaseName)"
        db = FMDatabase(path: path)
        if !db!.open() {
            print("Could not open database")
            return false
        }
        return true
    }

    // 创建表
    func createTable() {
        if db != nil, let sql = "CREATE TABLE IF NOT EXISTS myTable (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT)" {
            do {
                try db!.executeUpdate(sql)
            } catch(let error) {
                print("Error creating table: \(error)")
            }
        }
    }

    // 插入数据
    func insert(title: String, content: String) -> Bool {
        if db != nil {
            let values: [String : Any] = ["title": title, "content": content]
            let sql = "INSERT INTO myTable (title, content) VALUES (?, ?)"
            do {
                try db!.executeUpdate(sql, withArgumentsIn: values.values)
                return true
            } catch {
                print("Error inserting data: \(error)")
            }
        }
        return false
    }

    // 查询数据
    func query() -> FMResultSet? {
        if db != nil {
            let sql = "SELECT * FROM myTable"
            return db!.executeQuery(sql)
        }
        return nil
    }

    // 更新数据
    func update(_id: Int64, title: String, content: String) -> Bool {
        if db != nil {
            let sql = "UPDATE myTable SET title = ?, content = ? WHERE _id = ?"
            let args = [title, content, _id]
            do {
                try db!.executeUpdate(sql, withArgumentsIn: args)
                return true
            } catch {
                print("Error updating data: \(error)")
            }
        }
        return false
    }

    // 删除数据
    func delete(_id: Int64) -> Bool {
        if db != nil {
            let sql = "DELETE FROM myTable WHERE _id = ?"
            let args = [_id]
            do {
                try db!.executeUpdate(sql, withArgumentsIn: args)
                return true
            } catch {
                print("Error deleting data: \(error)")
            }
        }
        return false
    }
}


2. 使用FMDB进行数据存取

在iOS中,我们可以利用FMDB提供的API执行SQL命令来管理SQLite数据库。如上面的DatabaseManager类所示,首先确保数据库已打开,然后通过executeUpdate()执行SQL语句以创建表、插入、更新或删除数据,而executeQuery()则用于执行查询操作并获取结果集。

无论是在Android还是iOS平台上,SQLite数据库的操作都涉及SQL语句的编写以及相应的API调用。开发者应当根据各自平台的特性选择合适的库或者原生接口进行数据管理,从而确保应用程序能够有效地在本地持久化数据。同时,注意处理好数据库事务,确保数据一致性,并在适当的时候优化查询性能。


本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/11166.html

分享给朋友:

“Android与iOS应用中SQLite数据库的存取与修改操作” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

【说站】Java从resources读取文件内容的方法有哪些

【说站】Java从resources读取文件内容的方法有哪些

本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...