iOS Xcode样本项目

这些事示例测试项目,因此项目名称必须经过litesync-test才能正常工作。

完整库中没有此限制。


SQLite.swift包装器

有两个使用 SQLite.swift包装器的示例项目


第一个具有使用SQL的简单接口

try db.execute("CREATE TABLE IF NOT EXISTS Tasks (id INTEGER PRIMARY KEY, name TEXT, done INTEGER)") try db.run("INSERT INTO Tasks (name, done) VALUES (?,?)", name, Int(done!)) for row in try db.prepare("SELECT * FROM Tasks") { let id = row[0] as! Int64 let name = row[1] as! String let done = Int(row[2] as! Int64) print("id: \(id) name: \(name) done: \(done)") }

下载



第二个使用对象:

let tasks = Table("tasks") let id = Expression("id") let name = Expression("name") let done = Expression("done") try db.run(tasks.create(ifNotExists: true) { t in t.column(id, primaryKey: true) t.column(name) t.column(done) }) try db.run(tasks.insert(name <- taskname, done <- isdone!)) for task in try db.prepare(tasks) { print("id: \(task[id]) name: \(task[name]) done: \(task[done])") }

下载



本机SQLite接口

该示例项目使用本机SQLite接口

let queryString = "SELECT * FROM Tasks" var stmt:OpaquePointer? if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{ let errmsg = String(cString: sqlite3_errmsg(db)!) print("error preparing statement: \(errmsg)") return } while(sqlite3_step(stmt) == SQLITE_ROW){ let id = sqlite3_column_int(stmt, 0) let name = String(cString: sqlite3_column_text(stmt, 1)!) let done = sqlite3_column_int(stmt, 2) print("id: \(id) name: \(name) done: \(done)") } sqlite3_finalize(stmt)

下载



Instructions

两个项目都要:

1  在计算机上安装修改后的SQLite Shell和依赖项

2  启动一个SQLite Shell作为绑定到TCP地址的主节点

3  修改TCP地址以连接到项目代码

4  在模拟器或设备上构建并运行项目


要在主节点上打开数据库,我们使用如下命令:

sqlite3 "file:test.db?node=primary&bind=tcp://0.0.0.0:1234"