• Stars
    star
    49
  • Rank 585,874 (Top 12 %)
  • Language
    Swift
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A stand-alone Swift wrapper around the SQLite 3 client library.

Perfect - SQLite Connector

Get Involed with Perfect!

Star Perfect On Github Stack Overflow Follow Perfect on Twitter Join the Perfect Slack

Swift 4.0 Platforms OS X | Linux License Apache PerfectlySoft Twitter Slack Status

This project provides a Swift wrapper around the SQLite 3 library.

This package builds with Swift Package Manager and is part of the Perfect project. It was written to be stand-alone and so does not require PerfectLib or any other components.

Ensure you have installed and activated the latest Swift 4.0 tool chain.

To learn more, you can read the full documentation guide here or jump to the example here

Linux Build Notes

Ensure that you have installed sqlite3.

sudo apt-get install sqlite3

Building

Add this project as a dependency in your Package.swift file.

.Package(url: "https://github.com/PerfectlySoft/Perfect-SQLite.git", majorVersion: 3)

Edge Case

If you encounter error like such sqlite3.h file not found during $ swift build , one solution is to install the sqlite3-dev i.e. $ sudo apt-get install libsqlite3-dev

Usage Example

Let’s assume you’d like to host a blog in Swift. First we need tables. Assuming you’ve created an SQLite file ./db/database, we simply need to connect and add the tables.

let dbPath = "./db/database"

do {
	let sqlite = try SQLite(dbPath)
	defer {  
		sqlite.close()
	}

	try sqlite.execute(statement: "CREATE TABLE IF NOT EXISTS posts (id INTEGER PRIMARY KEY NOT NULL, post_title TEXT NOT NULL, post_content TEXT NOT NULL, featured_image_uri TEXT NOT NULL)")
} catch {
	print("Failure creating database tables") //Handle Errors
}

Next, we would need to add some content.

let dbPath = "./db/database"
let postTitle = "Test Title"
let postContent = "Lorem ipsum dolor sit amet…"

do {
   let sqlite = try SQLite(dbPath)
   defer {
     sqlite.close()
   }

   try sqlite.execute(statement: "INSERT INTO posts (post_title, post_content) VALUES (:1,:2)") {
     (stmt:SQLiteStmt) -> () in

     try stmt.bind(position: 1, postTitle)
     try stmt.bind(position: 2, postContent)
   }
 } catch {
		//Handle Errors
 }

Finally, we retrieve posts and post titles from an SQLite database full of blog content. Each id, post, and title is appended to a dictionary for use elsewhere.

let dbPath = "./db/database"
var contentDict = [String: Any]()

do {
	let sqlite = try SQLite(dbPath)
		defer {
			sqlite.close() // This makes sure we close our connection.
		}
	
	let demoStatement = "SELECT post_title, post_content FROM posts ORDER BY id DESC LIMIT :1"
	
	try sqlite.forEachRow(statement: demoStatement, doBindings: {
		
		(statement: SQLiteStmt) -> () in
		
		let bindValue = 5
		try statement.bind(position: 1, bindValue)
		
	}) {(statement: SQLiteStmt, i:Int) -> () in

        self.contentDict.append([
                "id": statement.columnText(position: 0),
                "second_field": statement.columnText(position: 1),
                "third_field": statement.columnText(position: 2)
            ])
  }
	
} catch {
	//Handle Errors
}

Further Information

For more information on the Perfect project, please visit perfect.org.

More Repositories

1

Perfect

Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and more…)
Swift
13,837
star
2

PerfectDocs

Reference and documentation for Perfect (Server-side Swift). Perfect (支持服务器端Swift语言的软件函数库)使用文档和参考手册.
HTML
567
star
3

PerfectTemplate

Empty Perfect Starter Project.
Swift
222
star
4

Perfect-TensorFlow

TensorFlow C API Class Wrapper in Server Side Swift.
Swift
168
star
5

Perfect-MySQL

A stand-alone Swift wrapper around the MySQL client library, enabling access to MySQL servers.
Swift
128
star
6

Perfect-Notifications

Apple Push Notifications (APNs) Server-Side library.
Swift
115
star
7

Perfect-HTTPServer

HTTP server for Perfect.
Swift
108
star
8

Perfect-CRUD

CRUD is an object-relational mapping (ORM) system for Swift 4+.
Swift
63
star
9

Perfect-Python

An expressway to import Python 2.7 modules into Server Side Swift
Swift
62
star
10

Perfect-PostgreSQL

A stand-alone Swift wrapper around the libpq client library, enabling access to PostgreSQL servers.
Swift
54
star
11

Perfect-MongoDB

A stand-alone Swift wrapper around the mongo-c client library, enabling access to MongoDB servers.
Swift
52
star
12

Perfect-CURL

cURL support for Perfect.
Swift
41
star
13

Perfect-Markdown

A solution to convert markdown text into html presentation in Swift, based on GerHobbelt's "upskirt" project.
Swift
41
star
14

Perfect-Heroku-Buildpack

Swift + Perfect Buildpack for Heroku
Shell
37
star
15

Perfect-Ubuntu

Install Swift and Perfect dependencies into an Ubuntu 16.04 system.
Shell
35
star
16

Perfect-FileMaker

A stand-alone Swift wrapper around the FileMaker XML Web publishing interface, enabling access to FileMaker servers.
Swift
34
star
17

Perfect-HTTP

Base HTTP Support for Perfect.
Swift
31
star
18

Perfect-Crypto

Cryptographic Operations
Swift
28
star
19

Perfect-Redis

A Swift client for Redis.
Swift
28
star
20

Perfect-LDAP

A simple Swift class wrapper of OpenLDAP.
Swift
27
star
21

Perfect-Net

Core asynchronous networking package used in Perfect. Includes support for TCP, SSL, UNIX socket files and IO event handling.
Swift
27
star
22

Perfect-Kafka

An Express Swift Client of Apache Kafka 0.8, the Stream Processing Platform
Swift
24
star
23

Perfect-Mustache

Mustache template support for Perfect.
Swift
24
star
24

Perfect-WebSockets

WebSockets support for Perfect.
Swift
23
star
25

Perfect-SysInfo

This project provides a Swift library to monitor system performance in essential metrics.
Swift
23
star
26

Perfect-Mosquitto

A Swift Class Wrapper of Perfect-libMosquitto, the MQTT client
Swift
23
star
27

Perfect-SMTP

SMTP Client for Perfect.
Swift
22
star
28

Perfect-Zip

Perfect Zip compression utility.
Swift
21
star
29

PerfectAppTemplate

Provides a structure for a larger project to grow into. It contains an HTTP Server config that loads from pre-separated Filters and Routes, a JSON config loader, and directories into which you can organize your handlers, objects and utility functions.
Swift
21
star
30

Perfect-NIO

Perfect 4 NIO
Swift
20
star
31

Perfect-Logger

File-Based Logging.
Swift
19
star
32

Perfect-Thread

Core threading library for Perfect Server Side Swift. Includes support for serial and concurrent thread queues, locks, read/write locks and events.
Swift
18
star
33

Perfect-XML

XML support for Perfect.
Swift
16
star
34

Perfect-Authentication

OAuth2 Implementations with Facebook, Google, LinkedIn, Slack, SalesForce and GitHub providers.
Swift
15
star
35

Perfect-INIParser

A lightweight INI file parser in Server Side Swift
Swift
15
star
36

Perfect-LocalMirror

Perfect Server Local Image Builder 编译加速器
Shell
14
star
37

Perfect-COpenSSL

C module OpenSSL import for Perfect.
C
12
star
38

Perfect-OAuth2

OAuth2 Implementations with Facebook, Google, LinkedIn, Slack, SalesForce and GitHub providers.
Swift
10
star
39

Perfect-Stripe

Server Side Swift 3 Stripe API
Swift
10
star
40

Perfect-FastCGI

FastCGI server for Perfect.
Swift
9
star
41

Perfect-MariaDB

A stand-alone Swift wrapper around the MariaDB client library, enabling access to MariaDB servers. http://www.perfect.org
Swift
9
star
42

Perfect-libxml2

libxml2 support module for Perfect.
Swift
8
star
43

Perfect-Local-Auth-PostgreSQL-Template

Template starter template for a Local Authentication - equipped server
CSS
8
star
44

PerfectAPIGenerator

Documentation generator for the Perfect API, written in Perfect.
JavaScript
8
star
45

Perfect-Hadoop

Perfect Hadoop: WebHDFS, MapReduce & Yarn.
Swift
8
star
46

PerfectDocGenerator

The Perfect Documentation build process.
Swift
7
star
47

Perfect-FastCGI-Apache2.4

mod_perfect - Apache FastCGI connector
C++
7
star
48

Perfect-ZooKeeper

A ZooKeeper Client in Swift (LINUX ONLY)
Swift
7
star
49

Perfect-LocalAuthentication-PostgreSQL

Local Authentication processes and routes
Swift
6
star
50

Perfect-COpenSSL-Linux

C module OpenSSL import for Perfect (Linux).
C++
6
star
51

Perfect-libcurl

C module libcurl import for Perfect.
C
5
star
52

Perfect-Turnstile-MongoDB

A MongoDB ORM single-package integration for Turnstile authentication.
Swift
5
star
53

Perfect-OpenLDAP

OpenLDAP C Library for Swift.
Swift
5
star
54

Perfect-LinuxBridge

C module Linux compatibility import for Perfect
C
5
star
55

Perfect-Repeater

A simple library that takes a closure and executes it at the specified interval until the closure returns false or the application is terminated.
Swift
5
star
56

Perfect-Turnstile-MySQL

A MySQL ORM single-package integration for Turnstile authentication.
Swift
5
star
57

Perfect-WebRedirects

Filter for specified routes (including trailing wildcard routes) and perform redirects as instructed if a match is found.
Swift
5
star
58

Perfect-Session-MySQL

MySQL Driver for Perfect Sessions.
Swift
4
star
59

Perfect-LocalAuthentication-MySQL

Local Authentication, MySQL module
Swift
4
star
60

Perfect-Turnstile-PostgreSQL

A PostgreSQL ORM single-package integration for Turnstile authentication.
Swift
4
star
61

Perfect-libMosquitto

C library of Mosquitto (MQTT client) for Swift
Swift
4
star
62

Perfect-Session-MongoDB

Perfect Session Drivers for MongoDB.
Swift
4
star
63

Perfect-sqlite3-support

C module import for sqlite3.
Swift
4
star
64

Perfect-Turnstile-SQLite

An SQLite ORM single-package integration for Turnstile authentication.
Swift
4
star
65

Perfect-Session

Session drivers (for use in Perfect projects).
Swift
4
star
66

Perfect-CZlib-src

C
3
star
67

PerfectTemplateFCGI

Perfect Empty Starter Project for FastCGI.
Swift
3
star
68

Perfect-libSASL

SASL C library for Swift.
C
3
star
69

Perfect-Session-Redis

Redis Driver for Perfect Sessions
Swift
3
star
70

Perfect-CouchDB

CouchDB Database Connector for Perfect.
Swift
3
star
71

Perfect-Local-Auth-MySQL-Template

CSS
3
star
72

PerfectTemplateAppEngine

Perfect Empty Starter Project for Google App Engine.
Swift
3
star
73

Perfect-SPNEGO

A general Server Side Swift library that implements SPNEGO mechanism.
C
3
star
74

Perfect-Session-PostgreSQL

PostgreSQL Driver for Perfect Sessions.
Swift
3
star
75

Perfect-mysqlclient

C module import for MySQL client.
Swift
3
star
76

Perfect-GoogleAnalytics-MeasurementProtocol

Server side Google Analytics, using Swift / Perfect
Swift
2
star
77

Perfect-ODBC

Perfect connector for ODBC databases
Swift
2
star
78

Perfect-mariadbclient

C module import for MariaDB client.
Swift
2
star
79

Perfect-NewRelic-Linux

This project provides a Swift class wrapper for New Relic Agent SDK.
Swift
2
star
80

PerfectDocsUI

User interface for Perfect Docs Dev.
JavaScript
2
star
81

Archived-Perfect-Issues

JIRA Archive of Perfect.
Swift
2
star
82

Perfect-Turnstile-CouchDB

A CouchDB ORM single-package integration for Turnstile authentication.
Swift
2
star
83

Perfect-libpq

C module import for libpq.
Swift
2
star
84

Perfect-Session-SQLite

SQLite driver for Perfect Sessions.
Swift
2
star
85

Perfect-libpq-linux

C module import for libpq.
Swift
2
star
86

Perfect-mysqlclient-Linux

C module import for MySQL client Linux.
Swift
1
star
87

Perfect-Session-CouchDB

CouchDB Driver for Perfect Sessions.
Swift
1
star
88

Perfect-CloudFormation

Support for CloudFormation server instances.
Swift
1
star
89

Perfect-mongo-c-linux

Obsolete - Perfect Mongodb c-binding for linux.
Swift
1
star
90

Perfect-NIOCompat

Perfect 3 -> 4 compatability
Swift
1
star
91

Perfect-mongo-c

Obsolete - C module import for mongo-c.
Swift
1
star
92

Perfect-Assistant-Issues

Tracking issues with Perfect Assistant
1
star
93

Perfect-mariadbclient-Linux

C module import for MariaDB client Linux.
Swift
1
star