如何从 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】:

您遇到此崩溃是因为您获得了nilFirstNameLastName,并且您可以将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 获取两个数据并快速返回一个将其中两个组合在一起的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

用 FMDB 快速保存 NSI​​mage

FMDB 的多线程问题

如何将 fmdb 用于登录页面?

如何在 swift 3 中使用现有的 SQLite? (FMDB)

如何从 PHP 调用 R 脚本?

如何在通用 iOS 设备而不是模拟器上使用 FMDB?