2015-06-25 7 views
1

Я действительно смущен тем, как использовать sqlite с Swift. Мои запросы INSERT выполняются без ошибок, но когда я открываю базу данных, данные, которые должны были быть добавлены, не существуют. Я использую обертку FMDB.Проблемы с sqlite, fmdb и swift

Вот мой код:

let documentsFolder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String 

let path = documentsFolder.stringByAppendingPathComponent("currencylite.db") 

let database = FMDatabase(path: path) 

if !database.open() { 
     println("Unable to open database") 
     return 

    } else { 
     if database.open() { 

let querySQL = "INSERT INTO currencyrates (baseccy, matchccy, rateccy, date) VALUES ('\(base)', '\(currency)', \(frate), '\(updtdate)')" 
println(querySQL)        

database.executeQuery(querySQL, withArgumentsInArray: nil) 
    } 

println(querySQL) эхо INSERT INTO currencyrates (baseccy, matchccy, rateccy, date) VALUES ('AUD', 'ZAR', 9.3683, '2015-06-25') Так что я уверен, что он не приходит из данных, но от того, как я выполнить запрос ...

Edit:

После выполнения запроса я просматриваю обе базы данных sqlite, которые находятся в папке проекта, и в папке «Документ», и оба не обновляются. Я могу читать контент, хотя я просто не могу вставить. ..

Благодарим за помощь!

ответ

0

попробовать это:

if !database.executeUpdate("insert into currencyrates (baseccy, matchccy, rateccy, date) values (?, ?, ?, ?)", withArgumentsInArray: [base, currency, NSNumber(double: frate), updtdate]) { 
println("insert 1 table failed: \(database.lastErrorMessage())") 
          } 
0

вы должны сделать это следующим образом:

let documentsFolder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String 

let path = documentsFolder.stringByAppendingPathComponent("currencylite.db") 

let database = FMDatabase(path: path) 

if !database.open() { 
    println("Unable to open database") 
    return 

} else { 
    if database.open() { 

let querySQL = "INSERT INTO currencyrates (baseccy, matchccy, rateccy, date) VALUES (?, ?, ?, ?)" 
println(querySQL)        

database.executeQuery(querySQL, baseccy, matchccy, NSNumber(double: rateccy), date) 
} 

при условии: baseccy: String, matchccy: String, rateccy: Double, date: String

+0

Спасибо, но это не сработало. .. :( – vinceolala