在Swift中导入和查询SQLite数据库 – iOS

我正在做一个应用程序,使用5个不同的表的大型数据库。 我想将该数据库导入到应用程序包并能够通过表查询。 数据库不会被用户编辑,因此不需要添加和删除logging。

什么是在应用程序中添加数据库的最佳方式?

过程如下:

  1. 将数据库添加到您的包中。 当您将其拖放到您的项目中时,您可以select将其添加到表示主应用程序的目标中。 或者,查看目标设置,点击“Build Phases”并确认数据库出现在“Copy Bundle Resources”列表中。

  2. 使用像FMDB这样的框架来简化您的生活。 这是Objective-C编写的,但在Swift中也很棒。 你需要做的是:

    • 将FMDB的.h和.m文件复制到您的项目中;

    • 当提示创build“桥接头”时,请这样做;

    • 将以下行添加到您的桥接头:

      #import "FMDB.h" 

    通过遵循这些步骤,您可以将Objective-C中开发的这个框架应用到您的Swift项目中。

  3. 您现在可以使用FMDB框架编写您的Swift代码。 例如,Swift代码打开数据库,从名为test的表中select列xyz ,如下所示:

     let path = NSBundle.mainBundle().pathForResource("test", ofType:"sqlite") let database = FMDatabase(path: path) if !database.open() { print("Unable to open database") return } if let rs = database.executeQuery("select * from test", withArgumentsInArray: nil) { while rs.next() { let x = rs.stringForColumn("x") let y = rs.stringForColumn("y") let z = rs.stringForColumn("z") print("x = \(x); y = \(y); z = \(z)") } } else { print("executeQuery failed: \(database.lastErrorMessage())") } database.close()