我猜这种方法不正确吗?我按了确定按钮,但桌上没有任何显示。
还有其他方法可以从数据库中获取数据吗?如果可能,我想将它们作为数组类型。
我刚刚添加了更多代码。
请看看它,任何帮助将不胜感激。
谢谢。
let filemgr = FileManager.default
let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let docsDir = dirPaths[0] as String
databasesPath = docsDir.appending("/infos.db")
// 데이터베이스 파일이 존재하지 않으면 데이터베이스 파일 생성
if !filemgr.fileExists(atPath: databasesPath!) {
let contactDB = FMDatabase(path: databasesPath)
// 데이터베이스를 열고 info 테이블을 생성한다.
if contactDB.open() {
let sql_stmt = "CREATE TABLE IF NOT EXISTS INFOS (ID INTEGER PRIMARY KEY AUTOINCREMENT, WORD TEXT, MEANING TEXT, INFO TEXT)"
if !contactDB.executeStatements(sql_stmt) {
print("Error \(contactDB.lastErrorMessage())")
}
contactDB.close()
} else {
print("Error \(contactDB.lastErrorMessage())")
}
}
}
@IBAction func dropTable(_ sender: Any) {
let contactDB = FMDatabase(path: databasesPath)
if contactDB.open() {
let myQuery = "DROP TABLE IF EXISTS info"
contactDB.executeStatements(myQuery)
}
}
@IBAction func ok(_ sender: Any) {
let contactDB = FMDatabase(path: databasesPath)
if contactDB.open() {
let querySQL = "SELECT word FROM infos"
let result: FMResultSet? = contactDB.executeQuery(querySQL, withArgumentsIn: [])
allInfo.word = result?.string(forColumn:"word")
// next 메서드는 일치하는 레코드가 적어도 하나 이상인지 확인하기 위함
tableview.reloadData()
contactDB.close()
} else {
print("Error \(contactDB.lastErrorMessage())")
}
}
最佳答案
请尝试在数组中添加数组,然后在tableview单元格标签中添加。
var wordtext:[String]!
@IBAction func ok(_ sender: Any) {
let contactDB = FMDatabase(path: databasesPath)
if contactDB.open() {
let querySQL = "SELECT word FROM infos"
let result: FMResultSet? = contactDB.executeQuery(querySQL, withArgumentsIn: [])
allInfo.word = result?.string(forColumn:"word")
wordtext.append(result?.string(forColumn:"word"))
// OR wordtext.append = result?.string(forColumn:"word")
// next 메서드는 일치하는 레코드가 적어도 하나 이상인지 확인하기 위함
tableview.reloadData()
contactDB.close()
} else {
print("Error \(contactDB.lastErrorMessage())")
}
}