雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

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

2024-06-29 68

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调用。开发者应当根据各自平台的特性选择合适的库或者原生接口进行数据管理,从而确保应用程序能够有效地在本地持久化数据。同时,注意处理好数据库事务,确保数据一致性,并在适当的时候优化查询性能。

更新于:4个月前
赞一波!

文章评论

评论问答