以下代码是在sqlite中获取并保存和插入数据
class DataBaseFile: NSObject
{
var datarray = [[String:Any]]()
let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent("test.sqlite")
var db: OpaquePointer?
var statement: OpaquePointer?
static let DatBase = DataBaseFile()
override init()
{
print("sqlitedb has been initialized")
}
func createDb()
{
print(fileURL)
if sqlite3_open(fileURL.path, &db) == SQLITE_OK
{
if sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS ServicesList (NAME TEXT PRIMARY KEY ,SPACILITY TEXT ,QUALIFICATION TEXT ,EXPERIANCE TEXT)", nil, nil, nil) != SQLITE_OK
{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error creating ServicesListtable: \(errmsg)")
}
if sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS TherapistList (NAME TEXT PRIMARY KEY ,SPACILITY TEXT ,QUALIFICATION TEXT ,EXPERIANCE TEXT)", nil, nil, nil) != SQLITE_OK
{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error creating TherapistListtable: \(errmsg)")
}
}
}
func getdata(_ nameOftable :String)->[[String:Any]]
{
if sqlite3_prepare_v2(db, "SELECT * FROM \(nameOftable);", -1, &statement, nil) == SQLITE_OK
{
if sqlite3_step(statement) == SQLITE_ROW
{
// 3
let queryResultCol0 = sqlite3_column_text(statement, 0)
let queryResultCol1 = sqlite3_column_text(statement, 1)
let queryResultCol2 = sqlite3_column_text(statement, 2)
let queryResultCol3 = sqlite3_column_text(statement, 3)
let name = String(cString: queryResultCol0!)
let SPACILITY = String(cString: queryResultCol1!)
let QUALIFICATION = String(cString: queryResultCol2!)
let EXPERIANCE = String(cString: queryResultCol3!)
// 5
print("Query Result:")
print("\(name) | \(SPACILITY) | \(QUALIFICATION) | \(EXPERIANCE)")
let dict = ["Name":name,"SPACILITY":SPACILITY,"QUALIFICATION":QUALIFICATION,"EXPERIANCE":EXPERIANCE]
datarray.append(dict)
}
}
else
{
print("SELECT statement could not be prepared")
}
if sqlite3_close(db) != SQLITE_OK
{
print("error closing database")
}
// 6
sqlite3_finalize(statement)
print(datarray)
statement = nil
db = nil
return datarray
}
func insertDatatoTherapistOrServisesDB (_ name:String, _ SPACILITY:String, _ QUALIFICATION:String, _ EXPERIANCE:String, TYPEOFTABLE: String)
{
let sattemant = "INSERT INTO \(TYPEOFTABLE) (NAME, QUALIFICATION, SPACILITY, EXPERIANCE) VALUES (\(name), \(SPACILITY), \(QUALIFICATION), \(EXPERIANCE))"
print(sattemant)
if sqlite3_prepare_v2(db, "INSERT INTO \(TYPEOFTABLE) (NAME, QUALIFICATION, SPACILITY, EXPERIANCE) VALUES ('\(name)', '\(SPACILITY)', '\(QUALIFICATION)', '\(EXPERIANCE)')", -1, &statement, nil) == SQLITE_OK
{
if sqlite3_step(statement) != SQLITE_DONE {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure inserting foo: \(errmsg)")
}
}
else
{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
}
}
func insertDatatoUserDetails(_ Name:String, _ Age:String, _ Email:String, _ MobileNo:String, _ Gender:String)
{
if sqlite3_prepare_v2(db, "INSERT INTO UserDetailsList (NAME, MOBILENO, EMAIL, AGE ,GENDER ) VALUES (\"\(Name)\"), (\"\(MobileNo)\"), (\"\(Email)\"), (\"\(Age)\"), (\"\(Gender)\")", -1, &statement, nil) == SQLITE_OK
{
if sqlite3_step(statement) != SQLITE_DONE
{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure inserting foo: \(errmsg)")
}
}
else
{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
}
}
我已经在sqlite中插入了数据,但是我无法从sqlite获取数据,它只获得一行或一些时间两行。但它并不完全
detailDataTherapist = DataBaseFile.DatBase.getdata("TherapistList")
print(detailDataTherapist)
上面的代码显示服务列表数据,并且没有得到该表的确切数据帮助我....!