在表格中获取Sqlite数据中的数据无法正确执行

时间:2017-10-12 10:34:18

标签: ios swift

以下代码是在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)

上面的代码显示服务列表数据,并且没有得到该表的确切数据帮助我....!

0 个答案:

没有答案