使用FMDB将UIImage插入数据库

时间:2016-07-02 10:41:10

标签: ios swift uiimage fmdb

我有一个由Navicat创建的sqlite数据库包含一个名为EDITED_PHOTOS的表,该表有两列:

1- ID,它是主整数和自动增量。

2- IMAGE类型是blob

enter image description here

首先,我将UIImage转换为NSData解包,然后使用FMDB数据库队列在块中执行查询。

    let imageToData = UIImagePNGRepresentation(image)
    queue!.inTransaction { db, rollback in

        do {

            let value =  try db.executeQuery("INSERT INTO EDITED_IMAGES VALUES (?,?)", values: ["\'NULL\'",imageToData!])

            print(value)

        }catch {


        }

    }

执行insert语句并返回FMResultSet而没有任何错误。数据库的路径是正确的,找到了表但是插入查询没有正确插入可能吗?但它没有产生任何错误?

我通过从Xcode下载应用程序容器执行插入后检查了设备上的数据库,表中没有记录。或者通过编程方式检查表中的记录数。

我下次尝试插入查询是使用executeStatements,所以我做的是以下内容:

let value =  db.executeStatements("INSERT INTO EDITED_IMAGES VALUES (\'NULL\',\(imageToData!))")

由于NSData表示与此类似:<89504e47 0d0a1a0a 0000000d .............>

执行此查询会生成错误:Error inserting batch: near "<": syntax error

我尝试使用没有队列的FMDatabase,但它有完全相同的问题。

1 个答案:

答案 0 :(得分:-1)

你可以使用LOAD_FILE(&#39; /dir/path/hello.png') 你也可以用

INSERT INTO xx_BLOB(ID,IMAGE)VALUES(1,LOAD_FILE(&#39; /dir/path/hello.png'));