如何在 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 数据库中的文件的访问?