在Swift中使用FMDB打开DB



我想用FMDB打开现有数据库。DB应该是带有结尾.dbsqlite数据库。

我的代码是:静态让我们共享:dbmanager = dbmanager()

let databaseFileName = "/mydb.db"
var pathToDatabase: String!
var pathNSURL: NSURL!
var database: FMDatabase!

override init() {
    super.init()
    let documentsDirectory = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString) as String
    let zwerg = documentsDirectory + databaseFileName
    let pathNSURL = NSURL(fileURLWithPath: zwerg)
    let pathString = documentsDirectory + databaseFileName
    pathToDatabase = pathNSURL.path
    print(pathToDatabase)
}

func firstQuestion() -> Bool {
    if openDatabase(){
        let query = "SELECT * FROM movie"
        do {
            let result = try database.executeQuery(query, values: nil)
            print(result)
        }
        catch {
            print(error.localizedDescription)
        }
        database.close()
        return true
    }
    return false
}
func openDatabase() -> Bool {
    if database == nil {
        print(FileManager.default.fileExists(atPath: pathToDatabase))
        if FileManager.default.fileExists(atPath: pathToDatabase) {
            print("Database set new path -> File exists")
            database = FMDatabase(path: pathToDatabase)
        }
    }
    if database != nil {
        print("Database != nil")
        if database.open() {
            print("Database is open in != nil")
            return true
        }
    }
    return false
}

im从vc:

调用方法firstQuestion()
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    print(DBManager.shared.firstQuestion())
}

我的问题是fileExists方法总是返回false。文件名是正确的。这是我在Swift中使用数据库的第一个项目,所以也许我犯了一个愚蠢的错误...任何建议?

感谢您的帮助!

let fileManager = FileManager.default
let docURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
let databaseURL = docURL.appendingPathComponent("databaseNaeme.db")

并将数据库初始化为:

database = FMDatabase(path: databaseURL.absoluteString)

最新更新