SQLiteSwift is a library written in Swift that makes it easy for you to deal with sqlite
platform :ios, '8.0'
use_frameworks!
target 'XXXX' do
pod 'SQLiteSwift'
end
- Make a Model
classUser:SSMappable{staticvartable:String="User" // Table Name varid:Int? // INTEGER Column varname:String? // TEXT Collumn varage:Int?varnickname:String?varisMan:Bool? // INTEGER Column requiredinit(){}func dbMap(connector:SSConnector){ // id column primarykey, autoincrement, notnull attribute id <-connector["id",.PrimaryKey,.AutoIncrement,.NotNull] // name column unique attribute name <-connector["name",.Unique] // age column check attribute age <-connector["age",.Check("age>0")] // nickname column default attribute nickname <-connector["nickname",.Default("None")] // isMan column auto convert INTEGER(SQLite) <=> Bool(Swift) isMan <-connector["isMan"]}
}
### Step2
* CREATE TABLE
~~~swift
let createTable:SSResult<User> = SQLiteConnection(filePath: dbFilePath).createTable() //make 'User' Table
if createTable.result {
print("correct!! make a table")
}else {
print("failed to make a table")
}
INSERT
letuser=User() user.name ="takashi" user.age =27 user.nickname ="takayan" user.isMan =trueletinsert:SSResult<User>=SQLiteConnection(filePath: dbFilePath).insert(user) // insert user row
SELECT
lettable:SSTable<User>=SQLiteConnection(filePath: dbFilePath).table() // select User table foruserin table.records {print(user.name,user.age,user.nickname, user.isMan)}
UPDATE
lettable:SSTable<User>=SQLiteConnection(filePath: dbFilePath).table()letmodel= table.records[0] model.age =30 model.isMan =falseletupdate:SSResult<User>=SQLiteConnection(filePath: dbFilePath).insert(user) // update user row
DELETE
lettable:SSResult<User>=SQLiteConnection(filePath: dbFilePath).table()letmodel= table.records[0]letdelete:SSResult<User>=SQLiteConnection(filePath: dbFilePath).delete(model) // delete user row
IsExistTable
letisExistTable:SSResult<User>=SQLiteConnection(filePath: dbFilePath).isExistTable() // is Exist User table if isExistTable.result {print("Table is exist")}
DELETE TABLE
letdeleteTable:SSResult<User>=SQLiteConnection(filePath: dbFilePath).deleteTable() // delete User table if deleteTable.result {print("delete table complete!!")}
Query
letquery="SELECT name, age FROM User WHERE age>? AND age<?;"letvalues=[21,30]letresult:SSTable<User>=SQLiteConnection(filePath: dbFilePath).query(query, params: values)
Transaction Commit
letconnect=SQLiteConnection(filePath: dbFilePath) connect.beginTransaction() // INSERT,DELETE,UPDATE using connect connect.commit()