Anda dapat menggunakan pustaka ini di Swift untuk SQLite
https://github.com/pmurphyjam/SQLiteDemo
SQLiteDemo
Demo SQLite menggunakan Swift dengan kelas SQLDataAccess yang ditulis di Swift
Menambahkan ke Proyek Anda
Anda hanya perlu tiga file untuk ditambahkan ke proyek Anda * SQLDataAccess.swift * DataConstants.swift * Bridging-Header.h Bridging-Header harus disetel di proyek Xcode Anda 'Objective-C Bridging Header' di bawah 'Swift Compiler - General'
Contoh Penggunaan
Cukup ikuti kode di ViewController.swift untuk melihat cara menulis SQL sederhana dengan SQLDataAccess.swift Pertama, Anda perlu membuka Database SQLite yang berhubungan dengan Anda.
let db = SQLDataAccess.shared
db.setDBName(name:"SQLite.db")
let opened = db.openConnection(copyFile:true)
Jika openConnection berhasil, sekarang Anda dapat melakukan penyisipan sederhana ke Tabel AppInfo
//Insert into Table AppInfo
let status = db.executeStatement("insert into AppInfo (name,value,descrip,date) values(?,?,?,?)",
”SQLiteDemo","1.0.2","unencrypted",Date())
if(status)
{
//Read Table AppInfo into an Array of Dictionaries
let results = db.getRecordsForQuery("select * from AppInfo ")
NSLog("Results = \(results)")
}
Lihat betapa sederhananya itu!
Istilah pertama dalam db.executeStatement adalah SQL Anda sebagai String, semua istilah berikut adalah daftar argumen variadic tipe Any, dan merupakan parameter Anda dalam Array. Semua istilah ini dipisahkan dengan koma di daftar argumen SQL Anda. Anda dapat memasukkan Strings, Integers, Date's, dan Blob tepat setelah pernyataan sekuel karena semua istilah ini dianggap sebagai parameter untuk sekuelnya. Array argumen variadic membuatnya nyaman untuk memasukkan semua sekuel Anda hanya dalam satu panggilan executeStatement atau getRecordsForQuery. Jika Anda tidak memiliki parameter apa pun, jangan masukkan apa pun setelah SQL Anda.
Larik hasil adalah Array Kamus dengan 'kunci' adalah nama kolom tabel Anda, dan 'nilai' adalah data yang diperoleh dari SQLite. Anda dapat dengan mudah melakukan iterasi melalui larik ini dengan loop for atau mencetaknya secara langsung atau menetapkan elemen Dictionary ini ke objek data kustom Kelas yang Anda gunakan di View Controllers untuk konsumsi model.
for dic in results as! [[String:AnyObject]] {
print(“result = \(dic)”)
}
SQLDataAccess akan menyimpan teks, double, float, blob, Date, integer dan long long integers. Untuk Blob Anda dapat menyimpan biner, varbinary, blob.
Untuk Teks Anda dapat menyimpan karakter, karakter, gumpalan, karakter bervariasi nasional, karakter asli, nchar, nvarchar, varchar, varian, karakter bervariasi, teks.
Untuk Tanggal Anda dapat menyimpan tanggal waktu, waktu, cap waktu, tanggal.
Untuk Integer Anda dapat menyimpan bigint, bit, bool, boolean, int2, int8, integer, mediumint, smallint, tinyint, int.
Untuk Ganda Anda dapat menyimpan desimal, presisi ganda, float, numeric, real, double. Ganda memiliki presisi paling tinggi.
Anda bahkan dapat menyimpan Null dari tipe Null.
Dalam ViewController.swift, contoh yang lebih kompleks telah diselesaikan dengan menunjukkan cara menyisipkan Kamus sebagai 'Blob'. Selain itu, SQLDataAccess memahami Swift Date () asli sehingga Anda dapat menyisipkan objek ini tanpa mengonversi, dan itu akan mengonversinya menjadi teks dan menyimpannya, dan ketika diambil, konversikan kembali dari teks ke Tanggal.
Tentu saja kekuatan sebenarnya dari SQLite adalah kemampuan Transaksinya. Di sini Anda benar-benar dapat mengantri 400 pernyataan SQL dengan parameter dan memasukkan semuanya sekaligus yang sangat kuat karena sangat cepat. ViewController.swift juga menunjukkan contoh bagaimana melakukan ini. Yang benar-benar Anda lakukan adalah membuat Array of Dictionaries yang disebut 'sqlAndParams', di Array ini Kamus penyimpanan Anda dengan dua kunci 'SQL' untuk pernyataan atau kueri sekuel String, dan 'PARAMS' yang hanya Array objek asli SQLite memahami kueri itu. Setiap 'sqlParams' yang merupakan Dictionary individual dari kueri sekuel plus parameter kemudian disimpan dalam Array 'sqlAndParams'. Setelah Anda membuat array ini, panggil saja.
let status = db.executeTransaction(sqlAndParams)
if(status)
{
//Read Table AppInfo into an Array of Dictionaries for the above Transactions
let results = db.getRecordsForQuery("select * from AppInfo ")
NSLog("Results = \(results)")
}
Selain itu, semua metode executeStatement dan getRecordsForQuery dapat dilakukan dengan String sederhana untuk kueri SQL dan Array untuk parameter yang dibutuhkan oleh kueri.
let sql : String = "insert into AppInfo (name,value,descrip) values(?,?,?)"
let params : Array = ["SQLiteDemo","1.0.0","unencrypted"]
let status = db.executeStatement(sql, withParameters: params)
if(status)
{
//Read Table AppInfo into an Array of Dictionaries for the above Transactions
let results = db.getRecordsForQuery("select * from AppInfo ")
NSLog("Results = \(results)")
}
Versi Objective-C juga ada dan disebut SQLDataAccess yang sama, jadi sekarang Anda dapat memilih untuk menulis sekuel Anda di Objective-C atau Swift. Selain itu SQLDataAccess juga akan bekerja dengan SQLCipher, kode saat ini belum disiapkan untuk bekerja dengannya, tetapi cukup mudah untuk dilakukan, dan contoh bagaimana melakukannya sebenarnya dalam versi Objective-C dari SQLDataAccess.
SQLDataAccess adalah kelas yang sangat cepat dan efisien, dan dapat digunakan sebagai pengganti CoreData yang benar-benar hanya menggunakan SQLite sebagai penyimpanan data yang mendasarinya tanpa semua gangguan integritas data inti CoreData yang datang dengan CoreData.