FMDB-Datenspeicher-Toolklasse in Swift

Zuerst müssen Sie die FMDB Swift-Versionsbibliothek in das Projekt einführen. Sie können sie über CocoaPods einführen oder den Quellcode der Bibliothek manuell herunterladen und dem Projekt hinzufügen.

Wenn Sie FMDB für Datenbankoperationen verwenden, können Sie zunächst eine von FMDatabase geerbte Datenbankklasse definieren, um Datenbankverbindungen und -operationen zu verwalten.

import Foundation
import FMDB

class MyDatabase: FMDatabase {
    
    

    static let shared = MyDatabase()

    override init() {
    
    
        super.init(path: "path_to_database")
    }

    func setup() throws {
    
    
        guard open() else {
    
    
            throw DatabaseError.connectionFailed
        }

        let createTableSQL = """
            CREATE TABLE IF NOT EXISTS person (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                name TEXT,
                age INTEGER
            )
        """
        try executeUpdate(createTableSQL, values: nil)
    }

    func insert(person: Person) throws {
    
    
        let insertSQL = "INSERT INTO person (name, age) VALUES (?, ?)"
        try executeUpdate(insertSQL, values: [person.name, person.age])
    }

    func getAllPersons() throws -> [Person] {
    
    
        let selectSQL = "SELECT * FROM person"
        let resultSet = try executeQuery(selectSQL, values: nil)
        var persons = [Person]()
        while resultSet.next() {
    
    
            let person = Person(id: resultSet.longLongInt(forColumn: "id"),
                                name: resultSet.string(forColumn: "name") ?? "",
                                age: resultSet.long(forColumn: "age"))
            persons.append(person)
        }
        return persons
    }

    func deletePerson(id: Int64) throws {
    
    
        let deleteSQL = "DELETE FROM person WHERE id = ?"
        try executeUpdate(deleteSQL, values: [id])
    }

    func updatePerson(person: Person) throws {
    
    
        let updateSQL = "UPDATE person SET name = ?, age = ? WHERE id = ?"
        try executeUpdate(updateSQL, values: [person.name, person.age, person.id])
    }

}

In diesem Beispiel wird eine MyDatabaseKlasse definiert, die von FMDatabaseDatenbankverbindungen und -vorgängen erbt und diese verwaltet. Es enthält mehrere Methoden zum Initialisieren der Datenbank, Erstellen von Tabellen, Einfügen von Daten, Abfragen von Daten, Löschen von Daten und Aktualisieren von Daten.

In diesem Beispiel Personwird eine Struktur definiert, um die Informationen einer Person darzustellen:

struct Person {
    
    
    var id: Int64 = 0
    var name: String = ""
    var age: Int = 0
}

Wenn Sie diese Datenbankklasse zum Ausführen von Datenbankoperationen verwenden, lautet der Beispielcode wie folgt:

do {
    
    
    try MyDatabase.shared.setup()
    let person = Person(name: "Tom", age: 18)
    try MyDatabase.shared.insert(person: person)
    let persons = try MyDatabase.shared.getAllPersons()
    print(persons)
    if let firstPerson = persons.first {
    
    
        try MyDatabase.shared.deletePerson(id: firstPerson.id)
        var updatedPerson = firstPerson
        updatedPerson.name = "Jerry"
        updatedPerson.age = 20
        try MyDatabase.shared.updatePerson(person: updatedPerson)
    }
} catch {
    
    
    print(error)
}

In diesem Beispiel setupwird die Methode zunächst aufgerufen, um die Datenbank zu initialisieren und die Tabelle zu erstellen.

Fügen Sie die Instanz in die Datenbank ein , indem Sie eine PersonInstanz erstellen und die Methode aufrufen . Rufen Sie dann die Methode auf, um die Informationen aller Mitarbeiter abzurufen und an die Konsole auszugeben.insertgetAllPersons

Als nächstes löschen Sie die Informationen der ersten Person, aktualisieren die Informationen der zweiten Person und rufen schließlich getAllPersonsdie Methode erneut auf, um die Informationen aller Personen abzurufen und an die Konsole auszugeben.

需要注意的是,在进行数据库操作时,需要使用异常处理来捕获可能出现的错误。

do {
    
    
    try MyDatabase.shared.setup()
    let person = Person(name: "Tom", age: 18)
    try MyDatabase.shared.insert(person: person)
    let persons = try MyDatabase.shared.getAllPersons()
    print(persons)
    if let firstPerson = persons.first {
    
    
        try MyDatabase.shared.deletePerson(id: firstPerson.id)
        var updatedPerson = firstPerson
        updatedPerson.name = "Jerry"
        updatedPerson.age = 20
        try MyDatabase.shared.updatePerson(person: updatedPerson)
    }
} catch {
    
    
    print(error)
}

おすすめ

転載: blog.csdn.net/chuzhaohzi/article/details/130005746