如何在 Firebird 上执行超过 32767 个字符的查询?

How to execute query longer than 32767 characters on Firebird?

我正在开发一个 Java 网络应用程序来处理大量文本(HTML 使用 base64 编码的代码字符串),我需要将其保存在我的数据库中。我使用的是 Firebird 2.0,每次尝试插入字符串长度超过 32767 个字符的新记录时,都会收到以下错误: GDS Exception. 335544726. Error reading data from the connection.

我对此做了一些研究,显然这是 Firebird 的字符限制,对于查询字符串和数据库中的记录都是如此。我已经尝试了几件事,比如在查询中拆分字符串然后连接各个部分,但它没有用。有谁知道这个问题的任何解决方法?

如果您需要在数据库中保存大量文本数据 - 只需使用 BLOB 字段。 Varchar 字段大小限制为 32Kb。 为了获得更好的性能,您可以使用二进制 BLOB 并在其中保存压缩数据。

Firebird 查询字符串在 Firebird 2.5 及更早版本中限制为 64 KB。 varchar 字段的最大长度为 32766 字节(这意味着在使用 UTF-8 时它只能存储 8191 个字符!)。一行的最大大小(blob 占 8 个字节)也是 64 KB。

如果要存储超过 32 KB 的值,则需要使用 BLOB SUB_TYPE TEXT,并且需要使用准备语句来设置值。