如何从 FMDB 获取两个数据并快速返回一个将其中两个组合在一起的字符串?
Posted
技术标签:
【中文标题】如何从 FMDB 获取两个数据并快速返回一个将其中两个组合在一起的字符串?【英文标题】:How to get two data from FMDB and return a String combined two of them in swift? 【发布时间】:2017-03-01 14:27:13 【问题描述】:我的数据库中有两条记录,'FirstName 和 LastName,我想获取其中两条,然后返回一个 FullName,在 tableView 中显示 FullName。使用 Swift3 和 Xcode8.2.1,FMDB 这是getFullName的函数
func getFullName() -> String
StudentDataBase.getInstance()
sharedInstance.database!.open()
let result : FMResultSet! = sharedInstance.database!.executeQuery("SELECT FirstName, LastName FROM Student_info", withArgumentsIn: nil)
let fullName = (result?.string(forColumn: "FirstName"))! + " " + (result?.string(forColumn: "LastName"))!
return fullName
sharedInstance 是一个全局的,StudentDataBase 是一个单例类:
class StudentDataBase : NSObject
var database: FMDatabase? = nil
var pathToDB: String!
class func getInstance() -> StudentDataBase
if((sharedInstance.database) == nil)
sharedInstance.database = FMDatabase(path: Utility.getPath("data.db"))
return sharedInstance
我的 Student.swift 是这样的:
import UIKit
//the model class to fetch the data from data.db
class Student : NSObject
var studentID: String = String()
var fstName: String = String()
var lstName: String = String()
var phoneNum: String = String()
我有一个线程是这样的enter image description here 如果有人可以提供帮助,非常感谢您
将Query编辑成
let result : FMResultSet! = sharedInstance.database!.executeQuery("SELECT ifnull(FirstName,'') as FirstName, ifnull(LastName,'') as LastName FROM Student_info", withArgumentsIn: nil)
将它们组合成一个字符串还有另一个错误: enter image description here
【问题讨论】:
【参考方案1】:您遇到此崩溃是因为您获得了nil
的FirstName
或LastName
,并且您可以将ifnull
与您的选择查询一起使用,如果它为nil,则返回空字符串。所以像这样改变你的查询。
let result : FMResultSet! = sharedInstance.database!.executeQuery("SELECT ifnull(FirstName,'') as FirstName, ifnull(LastName,'') as LastName FROM Student_info", withArgumentsIn: nil)
注意:您没有在查询中添加WHERE
子句,因此这将为您提供Student_info
表中的所有记录,如果您检查result.next()
以确认结果,则它是击球手是否包含记录。
【讨论】:
有一个错误显示无法使用类型为“(字符串)”的参数列表调用“executeQuery” @GraceYang 使用出现错误的代码编辑您的问题。 完成了,请看一下,我是swift和FMDB的新手,所以请你说得更具体一些或使用常见的易于理解的语言。我将不胜感激:) @GraceYang 你已经改变了整个功能,但我告诉你只改变查询检查我编辑的答案。 它的作品非常感谢你!!!!我怎样才能把它们加在一起?let fullName = (result?.string(forColumn: "FirstName"))! + " " + (result?.string(forColumn: "LastName"))!
这个也有错误,我已经编辑了问题并添加了截图以上是关于如何从 FMDB 获取两个数据并快速返回一个将其中两个组合在一起的字符串?的主要内容,如果未能解决你的问题,请参考以下文章