Открытие SQLite из пакета с помощью Swift - PullRequest
0 голосов
/ 12 июня 2018

У меня есть файл .sqlite в комплекте приложений.Я, кажется, открыть файл, но я не могу получить доступ к таблицам в файле.

let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("test.sqlite")

//opening the database
 if sqlite3_open(fileURL.path, &db) == SQLITE_OK {
   print("opening database")
    }
 let queryString = "SELECT * FROM Table1"

 var stmt:OpaquePointer?

//preparing the query
 if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
       let errmsg = String(cString: sqlite3_errmsg(db)!)
       print("error preparing insert: \(errmsg)")
       return
     }

Это дает следующее сообщение об ошибке: «ошибка подготовки вставки: нет такой таблицы: Table1»

Как я вижу, база данных найдена и открыта, но недоступна.Как я вижу из других постов в Stackoverflow, это должно работать

РЕДАКТИРОВАТЬ: теперь я вижу, что если я неправильно пишу имя базы данных из test.sqlite в ttestt.sqlite, я все равно получаю ту же ошибку.Смысл базы данных не найден.Что не так с этой строкой?

 let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("test.sqlite")

1 Ответ

0 голосов
/ 13 июня 2018

Решением было скопировать базу данных из пакета в каталог documnents:

 let bundleURL = Bundle.main.url(forResource: "test", withExtension: "sqlite")!
                try manager.copyItem(at: bundleURL, to: documentsURL)
                rc = sqlite3_open_v2(documentsURL.path, &db, SQLITE_OPEN_READWRITE, nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...