我需要从这个 Blob 中读取字节。我正在尝试以下操作,但出现此异常: oracle.sql.BLOB 无法转换为 [B
(defn select-test2[]
(clojure.contrib.sql/with-connection db
(with-query-results res ["SELECT my_blob from some_table"] (doall res))))
(defn obj [byte-buffer]
(if-not (nil? byte-buffer)
(with-open [object-in (ObjectInputStream.
(ByteArrayInputStream. byte-buffer))]
(.readObject object-in))))
(obj (:my_blob (first (select-test2))))
最佳答案
[B
是字节数组的“类”:
user=> (type (byte-array 0)) [B
所以您的代码中有一个地方需要一个字节数组,但它被赋予了一个 oracle.sql.Blob
实例。我敢打赌 :my_blob
会给你一个 Blob
;当您将 byte-buffer
(即 Blob
)传递给 ByteArrayInputStream
构造函数时,您会得到异常。
查找 oracle.sql.Blob
的 javadoc,了解如何从中提取字节数组或输入流。
关于database - Clojure 从数据库中读取 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630311/