【问题标题】:Why do I get Unable to Open Database file?为什么我无法打开数据库文件?
【发布时间】:2016-04-14 15:03:19
【问题描述】:

我是 iOS 开发的初学者,我想在我的应用程序中开发一个数据库。但是,当我尝试创建数据库时,它说 无法打开数据库文件

为了澄清(https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md

我的数据库开发代码如下

static func DB(){

        do {
            let db = try Connection("db.sqlite3")
            let users = Table("users")
            let id = Expression<Int64>("id")
            let name = Expression<String?>("name")
            let email = Expression<String>("email")

            try db.run(users.create { t in
                t.column(id, primaryKey: true)
                t.column(name)
                t.column(email, unique: true)
                })

        } catch {
            print("Dim background error")
        }
}

我从应用委托文件触发这个方法

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.

        AppCommon.DB()

        return true
    }

如何解决这个问题?请帮帮我,我真的需要你的帮助..!

【问题讨论】:

  • 什么是Connection?显示它如何尝试打开数据库文件。
  • @rmaddy - 实际上有人告诉过,如果连接找不到文件。它将尝试创建文件。问题是它没有创建它。
  • 您需要指定文件的完整路径,而不仅仅是文件名。
  • @rmaddy - 我如何提及完整路径?

标签: ios swift sqlite sqlite.swift


【解决方案1】:

在 iOS 上,您无法根据需要创建文件。 documents 目录中的正确位置(除其他外)。

引用您正在使用的库的文档https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#connecting-to-a-database

在 iOS 上,您可以在应用的 Documents 目录中创建可写数据库。

let path = NSSearchPathForDirectoriesInDomains(
   .DocumentDirectory, .UserDomainMask, true
).first!

let db = try Connection("\(path)/db.sqlite3")

【讨论】:

    【解决方案2】:

    斯威夫特 5

    Documents 目录的路径现在是一个字符串数组

    let path = NSSearchPathForDirectoriesInDomains(
                    .documentDirectory, .userDomainMask, true)
    let db = try Connection("\(path.first ?? "")/db.sqlite3")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多