情况如下:我正在尝试在 PostgreSQL 数据库中存储/检索 byte[] 数组和 BLOBS。
我正在使用 Scala Play 和 Anorm,但为了处理 BYTEA 和 BLOB,我已经退回到使用普通的旧 java.sql.Connection API 并大致遵循以下描述:
http://jdbc.postgresql.org/documentation/80/binary-data.html
我的代码如下所示:
def saveSmallImage(id: String, img: SmallImage): Unit = {
DB.withConnection { implicit conn =>
val ps = conn.prepareStatement(
"INSERT INTO SmallImage(id, mimeType, image) VALUES (?, ?, ?)")
ps.setString(1, id)
ps.setString(2, img.mimeType)
ps.setBinaryStream(3, img.binaryStream, img.length)
ps.executeUpdate()
ps.close()
}
}
其中“image”列的类型为 BYTEA,img.binaryStream 的类型为 InputStream。
我收到此错误:
java.sql.SQLFeatureNotSupportedException: Method
org.postgresql.jdbc4.Jdbc4PreparedStatement.
setBinaryStream(int, InputStream, long)
is not yet implemented.
我的 build.sbt 中有以下依赖项:
"postgresql" % "postgresql" % "9.1-901-1.jdbc4"
(这对应于 maven POM 文件中的 groupId、artifactId、version)。这似乎是最近的一篇。 Postgres 手册告诉我,这个功能自 PostgreSQL 7.2 版本以来就已经存在。
发生什么事了? PostgreSQL/JDBC 是否已被弃用并且不再维护? 我应该使用另一个版本才能使其工作吗? 或者 SQL 完全失效了,我应该切换到其他数据库吗? 在 Java 中使用 Postgres 是不是一个坏主意? 我的 postgres 版本是 9.3 但我使用的是 JDBC 9.1-x,这有什么关系吗?
如果有人告诉我我做错了什么以及如何让它发挥作用,我将非常感激。
PS: ...尝试 git-clone pgjdbc。它需要 ant 1.4.1 来构建。这个 ant 版本已经有大约 8 年历史了,并且在 Apache 基金会的网站上不再可用。是不是有点诡异?最佳答案
这似乎是最新的,不是吗?
“org.postgresql”%“postgresql”%“9.3-1100-jdbc41”
关于java - 使用 Java/Scala 存储/检索 BYTEA 和 BLOB : "java.sql.SQLFeatureNotSupportedException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24418068/