Introduction
This is an easy One-Class Wrapper for most of your SQL needs while working with iOS.
Background
I am working on an app that will be searching and manipulating a large amount of data, so I decided to seed and store the data in a database instead of holding it in memory and praying the app will not crash. I was unable to find anything easy to use, and even the tutorials did not give instructions on actually making anything work. They just gave a few commands, so I decided to write my own wrapper.
Using the Code
To add SQLite functions to your project:
- Make sure that the libsqlite3.tbd is linked to the project and you can do that in the General Settings of the app
- Add a header file to the project and call it BridgingHeader.h and type the following line to include the C API:
#include <sqlite3.h>
- Go to "Build Settings" and find "Objective-C Bridging Header." Use the search bar to find it quickly. Double-click and type "BridgingHeader.h". If you get "Could not import Objective-C Header," try "my-project-name/BridgingHeader.h"
- Go to "Build Phases," "Link Binary With Libraries," and add libsqlite3.tbd
- Add in the
SQLDataIO.swift
to your project (or just create a new one and copy/paste the code in from this sample project)
Functions:
updateDatabase
dbValue
dbInt
nextID
getRows
To use:
var dbCommand: String = ""
dbCommand = "CREATE TABLE Family(ID INT PRIMARY KEY NOT NULL,
FirstName CHAR(100), LastName CHAR(100), Age INT);"
updateDatabase(dbCommand)
var databaseRows: [[String]] = [[]]
var id: Int = 0
for i in 0...6
{
id = nextID("Family")
dbCommand = "insert into Family(ID, FirstName, LastName, Age)
values (\(id), '\(firstName[i])', '\(lastName[i])', '\(age[i])')"
updateDatabase(dbCommand)
}
dbCommand = "select ID, FirstName, LastName, Age from Family"
databaseRows = getRows(dbCommand, numColumns: 4)
dbCommand = "UPDATE Family SET FirstName = 'Adam' WHERE ID = 1;"
updateDatabase(dbCommand)
dbCommand = "select LastName from Family where ID = 1"
let lName: String! = dbValue(dbCommand)
dbCommand = "select Age from Family where ID = 2"
let ageInt: Int = dbInt(dbCommand)
dbCommand = "select Age from Family where ID = 2"
let ageString: String = dbValue(dbCommand)
dbCommand = "DELETE FROM Family WHERE ID = 1;"
updateDatabase(dbCommand)
History
- 29th May, 2016: Initial version