@@ -100,21 +100,24 @@ public final class Statement {
100100 }
101101
102102 fileprivate func bind( _ value: Binding ? , atIndex idx: Int ) {
103- if value == nil {
103+ switch value {
104+ case . none:
104105 sqlite3_bind_null ( handle, Int32 ( idx) )
105- } else if let value = value as? Blob {
106+ case let value as Blob where value. length == 0 :
107+ sqlite3_bind_zeroblob ( handle, Int32 ( idx) , 0 )
108+ case let value as Blob :
106109 sqlite3_bind_blob ( handle, Int32 ( idx) , value. bytes, Int32 ( value. length) , SQLITE_TRANSIENT)
107- } else if let value = value as? Double {
110+ case let value as Double :
108111 sqlite3_bind_double ( handle, Int32 ( idx) , value)
109- } else if let value = value as? Int64 {
112+ case let value as Int64 :
110113 sqlite3_bind_int64 ( handle, Int32 ( idx) , value)
111- } else if let value = value as? String {
114+ case let value as String :
112115 sqlite3_bind_text ( handle, Int32 ( idx) , value, - 1 , SQLITE_TRANSIENT)
113- } else if let value = value as? Int {
116+ case let value as Int :
114117 self . bind ( value. datatypeValue, atIndex: idx)
115- } else if let value = value as? Bool {
118+ case let value as Bool :
116119 self . bind ( value. datatypeValue, atIndex: idx)
117- } else if let value = value {
120+ case . some ( let value) :
118121 fatalError ( " tried to bind unexpected value \( value) " )
119122 }
120123 }
0 commit comments