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

时间:2015-12-08 11:43:54

标签: sql firebird

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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