swift4 sqlite3 数据绑定(sqlite3_bind_text)的坑(逼)!

Xcode9.2
Swift version 4.0.3
sqlite3
sqlite3_bind_text

    今天搞数据库,用sqlite3_bind_text插入数据的时候总是错乱
(插入的value顺序、位置不对!且插入的数据部分乱码了!)。

  • 错误代码:
let sql = "insert into UserInfo(ACCOUNT,PASSWORD,TOKEN,GETTOKENDATE) values(?,?,?,?)"
//...
let cstr =   text.cString(using: .utf8)
sqlite3_bind_text(stmt, Int32(bindIndex), cstr, -1, nil)
  • 但是直接插入,不用绑定就OK
let sql = "insert into UserInfo(ACCOUNT,PASSWORD,TOKEN,GETTOKENDATE) 
values('\(value0)','\(value1)','\(value2)','\(value3)')"

认真检验了几个小时,网上各种查,还是错乱!一直想着是不是这句
let cstr = text.cString(using: .utf8)
导致的类型转换出问题,但swift没别的方法了啊!还很傻的试了.ascii,.unicode,更错。最后没办法了,绝望中,完全不抱希望了,再试试转OC类型

let nsStr = text as! NSString
let cstr =   nsStr.utf8String
sqlite3_bind_text(stmt, Int32(bindIndex), cstr, -1, nil)

结果,T-M-D可以了!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容