Latest 0.10.10
Homepage https://github.com/stephencelis/SQLite.swift
License MIT
Platforms ios 8.0, tvos 9.0, osx 10.9
Authors

SQLite.swift

Build Status CocoaPods Version Platform Carthage compatible Join the chat at https://gitter.im/stephencelis/SQLite.swift

A type-safe, Swift-language layer over SQLite3.

SQLite.swift provides compile-time confidence in SQL statement
syntax and intent.

Features

  • A pure-Swift interface
  • A type-safe, optional-aware SQL expression builder
  • A flexible, chainable, lazy-executing query layer
  • Automatically-typed data access
  • A lightweight, uncomplicated query and parameter binding interface
  • Developer-friendly error handling and debugging
  • Full-text search support
  • Well-documented
  • Extensively tested
  • Companion project has SQLCipher support
  • Active support at StackOverflow, and Gitter Chat Room (experimental)

Usage

import SQLite

let db = try Connection("path/to/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)
})
// CREATE TABLE "users" (
//     "id" INTEGER PRIMARY KEY NOT NULL,
//     "name" TEXT,
//     "email" TEXT NOT NULL UNIQUE
// )

let insert = users.insert(name <- "Alice", email <- "[email protected]")
let rowid = try db.run(insert)
// INSERT INTO "users" ("name", "email") VALUES ('Alice', [email protected]')

for user in try db.prepare(users) {
    print("id: (user[id]), name: (user[name]), email: (user[email])")
    // id: 1, name: Optional("Alice"), email: [email protected]
}
// SELECT * FROM "users"

let alice = users.filter(id == rowid)

try db.run(alice.update(email <- email.replace("mac.com", with: "me.com")))
// UPDATE "users" SET "email" = replace("email", 'mac.com', 'me.com')
// WHERE ("id" = 1)

try db.run(alice.delete())
// DELETE FROM "users" WHERE ("id" = 1)

db.scalar(users.count) // 0
// SELECT count(*) FROM "users"

SQLite.swift also works as a lightweight, Swift-friendly wrapper over the C
API.

let stmt = try db.prepare("INSERT INTO users (email) VALUES (?)")
for email in ["[email protected]", "[email protected]"] {
    try stmt.run(email)
}

db.totalChanges    // 3
db.changes         // 1
db.lastInsertRowid // 3

for row in try db.prepare("SELECT id, email FROM users") {
    print("id: (row[0]), email: (row[1])")
    // id: Optional(2), email: Optional("[email protected]")
    // id: Optional(3), email: Optional("[email protected]")
}

db.scalar("SELECT count(*) FROM users") // 2

Read the documentation or explore more,
interactively, from the Xcode project’s playground.

SQLite.playground Screen Shot

For a more comprehensive example, see this article and the companion repository.

Installation

Note: SQLite.swift requires Swift 2 (and Xcode 7) or greater.

The following instructions apply to targets that support embedded
Swift frameworks. To use SQLite.swift in iOS 7 or an OS X command line
tool, please read the Frameworkless Targets section of the
documentation.

Carthage

Carthage is a simple, decentralized dependency manager for Cocoa. To
install SQLite.swift with Carthage:

  1. Make sure Carthage is installed.

  2. Update your Cartfile to include the following:

    github "stephencelis/SQLite.swift" ~> 0.10.1
  3. Run carthage update and add the appropriate framework.

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. To install
SQLite.swift with CocoaPods:

  1. Make sure the latest CocoaPods beta is [installed][CocoaPods
    Installation]. (SQLite.swift requires version 1.0.0.beta.6 or greater.)

    # Using the default Ruby install will require you to use sudo when
    # installing and updating gems.
    sudo gem install --pre cocoapods
  2. Update your Podfile to include the following:

    use_frameworks!
    
    pod 'SQLite.swift', '~> 0.10.1'
  3. Run pod install.

Manual

To install SQLite.swift as an Xcode sub-project:

  1. Drag the SQLite.xcodeproj file into your own project.
    (Submodule, clone, or download the project first.)

    Installation Screen Shot

  2. In your target’s General tab, click the + button under Linked
    Frameworks and Libraries
    .

  3. Select the appropriate SQLite.framework for your platform.

  4. Add.

Communication

See the planning document for a roadmap and existing feature requests.

Read the contributing guidelines. The TL;DR (but please; R):

  • Need help or have a general question? [Ask on Stack
    Overflow][] (tag sqlite.swift).
  • Found a bug or have a feature request? Open an issue.
  • Want to contribute? Submit a pull request.

Author

License

SQLite.swift is available under the MIT license. See the LICENSE
file
for more information.

Related

These projects enhance or use SQLite.swift:

Alternatives

Looking for something else? Try another Swift wrapper (or FMDB):

Latest podspec

{
    "name": "NSQLite.swift",
    "version": "0.10.10",
    "summary": "A type-safe, Swift-language layer over SQLite3 for iOS and OS X.",
    "description": "SQLite.swift provides compile-time confidence in SQL statement syntax andnintent.",
    "homepage": "https://github.com/stephencelis/SQLite.swift",
    "license": "MIT",
    "authors": {
        "Stephen Celis": "[email protected]"
    },
    "source": {
        "git": "https://github.com/nghiaphunguyen/SQLite.swift.git",
        "tag": "0.10.10"
    },
    "social_media_url": "https://twitter.com/stephencelis",
    "module_name": "SQLite",
    "platforms": {
        "ios": "8.0",
        "tvos": "9.0",
        "osx": "10.9"
    },
    "module_map": "podstuff/module.modulemap",
    "libraries": "sqlite3",
    "source_files": "SQLite/**/*.{c,h,m,swift}",
    "private_header_files": "SQLite/Core/fts3_tokenizer.h"
}

Pin It on Pinterest

Share This