如何在 hsqldb 数据库中存储文本和二进制文件?

Posted

技术标签:

【中文标题】如何在 hsqldb 数据库中存储文本和二进制文件?【英文标题】:How do I store both text and binary files in an hsqldb database? 【发布时间】:2013-03-03 21:04:47 【问题描述】:

我想提供两个 API 函数来将文件存储在数据库中 - 一个接受 byte[](或 InputStream),另一个接受 String。我想知道如何实现这样的 API。

我看到以下选项:

    定义两个字段 - 一个用于二进制文件的 BLOB,另一个用于文本文件的 CLOB。然后我可以将PreparedStatement.setBytes(或PreparedStatement.setBinaryStream)用于BLOB,将PreparedStatement.setString 用于CLOB。我不喜欢有两个领域。 使用String.getBytes() 将给定的String 转换为byte[],从而回到二进制大小写。我不喜欢将String 转换为byte[]

我想知道是否有不需要两个字段并避免额外字节缓冲区的解决方案。

【问题讨论】:

【参考方案1】:

Java String 和 Clob 是 Unicode 并存储为两字节字符。因此,如果要将这些值存储在 byte[] 或 Blob 中,则需要进行一些转换。

因此,最好的方法是使用两个单独的字段,一个用于 BLOB,另一个用于 CLOB 值。

【讨论】:

以上是关于如何在 hsqldb 数据库中存储文本和二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章

配置HSQLDB大存储

如何以二进制形式编写 hsqldb?

是否应该序列化对存储在 hsqldb 数据库中的文件的访问?

Spring Test:无法从 import.sql 文件将十六进制值插入 hsqldb

java如何把一个以文本存储的文件转化为二进制文件

HSQLDB 在检查点期间在 db.script.new 文件上抛出 Asset failed 异常和文件 io 错误