У меня есть процедура, в которой пользователь выбирает расположение файла, а затем я пытаюсь создать файл в этом месте.
Сначала я прошу пользователя выбрать путь к файлу следующим образом:
func ChooseCreateDBPath() -> String
{
var path : String = ""
let savePanel = NSSavePanel()
savePanel.canCreateDirectories = true
savePanel.showsTagField = true
savePanel.nameFieldStringValue = "imported.sqlite"
if (savePanel.runModal() == NSApplication.ModalResponse.OK) {
let result = savePanel.url
if (result != nil) {
path = result!.path
}
}
return path
}
Получив строку пути, по которому будет создана БД, запускается следующая процедура.
do {
self.dbConn = try Connection(strFilePath)
self.update_ui(message: "Created database: \(strFilePath)\n")
} catch {
self.update_ui(message: "Failed to create database : \(error)\n")
}
.... кажется, это не проблема. Я даже вижу, что файл sqlite появляется в выбранном месте.
Теперь я пытаюсь создать таблицу и поля....
do {
let leads = Table("leads")
let idlead = Expression<Int64>("idlead")
let email = Expression<String>("email")
try self.dbConn!.run(leads.create { t in
t.column(idlead, primaryKey: true)
t.column(email)
}
)
try self.dbConn!.run(leads.createIndex(email))
} catch {
self.update_ui(message: "Failed to create tables and indexes : \(error)\n")
}
Затем это дает мне: «Не удалось создать таблицы и индексы: невозможно открыть файл базы данных (код: 14)»
Чего я не понимаю, так это того, как он может создать файл, но не сможет с ним работать? Любые указатели будут высоко оценены.
Ваше здоровье
Джейс
sqlite3
для вашего файла базы данных. Кроме того, вы можете получить клиент с графическим интерфейсом для SQLite и посмотреть, сможете ли вы подключиться к файлу вручную. - person Joakim Danielson   schedule 29.11.2019