Swift 5 SQLite Issue - «Невозможно открыть базу данных» внезапно - PullRequest
0 голосов
/ 06 марта 2020

Я занимаюсь разработкой приложения iOS с использованием Xcode, а для хранения данных используется SQLite.

Существует проблема, связанная с SQLite, исключение "Невозможно открыть базу данных" / "не удается открыть файл "когда приложение вставило несколько тысяч записей в базу данных.

Одной из особенностей моего приложения является загрузка JSON, которая содержит около 1440 записей (запись - это число с меткой времени, например {timestamp : '00: 12 ', значение:' 29 '} и вставьте эти записи в SQLite. Я замечаю, что если я попытался загрузить около 3 ~ 4 JSON, это исключение появится, и приложение обработает sh .. .

Есть ли какие-либо ограничения на SQLite?

Существует код для вставки данных:

//INSERT Statement
func insert(_ tableName :String, rowInfo :[String:String]) -> Bool {
    var statement :OpaquePointer? = nil
    let sql = "insert into \(tableName) " + "(\(rowInfo.keys.joined(separator: ","))) " + "values (\(rowInfo.values.joined(separator: ",")))"
    if sqlite3_prepare_v2(self.db, sql.cString(using: String.Encoding.utf8), -1, &statement, nil) == SQLITE_OK {
        if sqlite3_step(statement) == SQLITE_DONE {
            return true
        }
        sqlite3_finalize(statement)
    }
    return false
}

1 Ответ

0 голосов
/ 07 марта 2020

Вы должны открыть базу данных при выполнении действия и когда вы закончите с подключением к базе данных, вы несете ответственность за его закрытие.

Попробуйте добавить

sqlite3_open(db)

вызов функции Начните.

И закрыть базу данных после выполнения операции (здесь перед функцией возврата) с помощью:

sqlite3_close(db)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...