我有一个由Navicat创建的sqlite数据库包含一个名为EDITED_PHOTOS
的表,该表有两列:
1- ID,它是主整数和自动增量。
2- IMAGE类型是blob
首先,我将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,但它有完全相同的问题。
答案 0 :(得分:-1)
你可以使用LOAD_FILE(&#39; /dir/path/hello.png') 你也可以用
INSERT INTO xx_BLOB(ID,IMAGE)VALUES(1,LOAD_FILE(&#39; /dir/path/hello.png'));