如何在 Swift 中使用查询语句检索数据?

Posted

技术标签:

【中文标题】如何在 Swift 中使用查询语句检索数据?【英文标题】:How to retrieve the data using query statement in Swift? 【发布时间】:2018-09-18 09:16:01 【问题描述】:

我想从名为 cache_image 的表中检索数据,但我不知道该怎么做,我在这里遇到了错误。

func checkCachedImages() ->Bool
    database?.open()
    var count = Int()
    for i in images
        do
            if let value = database?.executeQuery("SELECT DOWNLOAD_URL FROM CACHED_IMAGE WHERE IMAGE_NAME = ?", withArgumentsIn: [i])
                while value.next()
                    print(value.string(forColumn: "IMAGE_NAME"))
                    print(value.string(forColumn: "DOWNLOAD_URL"))
                    count += 1
                    print(count)
                
            
        catch 
            print(error)
        
    
    database?.close()
    if count == images.count
        print("The count is \(count)")
        return true
    

    return false

我确实有一个名为 cached_image 的表和两个名为 image_namedownload_url 的列,但是当我尝试使用

print(value.string(forColumn: "IMAGE_NAME")

它正在显示警告:

找不到 image_name 并且对于列“download_url”,它显示的是“Optional("")”

请帮我解决这个问题。

【问题讨论】:

为什么要用大写的“DOWNLOAD_URL”和“IMAGE_NAME” 我不知道,因为在查询语句中它是大写的,所以我用so 能不能把表名和列名改成小写 是的,试过了,但还是一样@QuocNguyen 在 fmdb 的示例中,他们写了try db.executeUpdate("INSERT INTO foo (bar) VALUES (?)", values: [1])",您是否仔细检查了您的查询类型,例如(?),而不是?withArgumentsInvalues 【参考方案1】:

您无法从结果中读取image_name,因为它不是SELECT 子句的一部分,但您不需要它,因为您可以从i 获得它

var numberOfRows = 0
var urls: [String] = ()
print("Image name: \(i)")
if let result = try database?.executeQuery("SELECT download_url FROM CACHED_IMAGE WHERE IMAGE_NAME = ?", values: [i]) 
    while result.next() 
        numberOfRows += 1
        let url = result.stringForColumnIndex(0)
        urls.append(url)
        print("\(url), \(i)")
    

print(numberOfRows)

【讨论】:

你好@Joakim Danielson 我尝试了上述解决方案,但 print(result.intForColumnIndex(0)) 产生 0 我不知道你在哪里打印的 我要打印download_url,如何获得? 我这样做了,它在url 变量中。只需修改我的打印语句。 让我们continue this discussion in chat。

以上是关于如何在 Swift 中使用查询语句检索数据?的主要内容,如果未能解决你的问题,请参考以下文章

hibernate 检索方式

如何用SQL语句的查询实现两个表之间的查询连接

使用子查询

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

如何提高sql2000全文检索搜索效率

MySQL数据检索+查询+全文本搜索