2016-05-12 89 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是的它会数! –

相关问题