2016-05-12 41 views
0

我有一個SQLite數據庫,我想用一些初始數據填充。在SQLite.swift數據庫創建後插入初始數據

使用SQLite.swift,這種方法似乎工作:

do { 
    let _ = try db.run(userDictionary.create(ifNotExists: false) {t in 
     t.column(wordId, primaryKey: true) 
     t.column(word, unique: true) 
     t.column(frequency, defaultValue: 1) 
     t.column(following, defaultValue: "") 
     }) 

} catch _ { 
    print("table already exists") 
    return 
} 

// Add some initial data for a new database 
print("adding new data") 
myMethodToInsertInitialData() 

這種工作方式,雖然是我使用ifNotExists: false初始創建數據庫後每次拋出一個錯誤。 (將其設置爲true不會引發錯誤(或允許提前返回)。)但是,除了第一次以外,每次都拋出一個錯誤看起來很糟糕。我並不是真的認爲它是一個錯誤。我只想在新創建的數據庫中插入一些數據。有沒有更好的方法來做到這一點,或者這是每個人都做的?

+0

你可以在'NSUserDefaults'或屬性列表'plist'設置一個布爾值來檢查它是否在運行應用程序中的數據第一次。 – TPlet

+0

@TPlet,我認爲這是一個有效的選項。然而,我偏離它的原因是我可以想象刪除數據庫表並在第一次運行後的某段時間重新創建它。通過上述方法,我在數據庫表創建時(並且僅在此時)添加初始數據。 – Suragch

+0

噢,好吧。我沒有使用SQLite.swift,所以我在這裏有一個問題:在文檔中說它可以用例如'讓用戶=表('用戶')'。如果這個表不存在會發生什麼?它只是零,還是會崩潰? ' – TPlet

回答

1

要檢查是否有表中的可用與否在SQLite.swift

do 
{ 
    db = try Connection(YOUR_DB_PATH) 
    let intCount : Int64 = db.scalar("SELECT count(*) FROM yourTableName") as! Int64 
    if (intCount == 0) 
    { 
     //callWebServiceCall() 
    } 
    else 
    { 
     //getDataFromDB() 
    } 
} 
catch 
{ 
    print("error") 
} 
+0

當我閱讀文檔時,我不太瞭解標量。所以即使表格變得非常大,這將是一個快速查找,對嗎? – Suragch

+0

@Suragch是的它會數! –

相關問題