3

我正在将字符串写入具有 TEXT 类型字段的数据库中。这意味着我可以在该字段中写入65,535 个字节。之后我会得到一个 SQL 异常:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'DETAILS' at row 1

所以我现在的问题是,我如何检查我的字符串,然后如何在正确的位置剪切字符串,它仍然适合数据库。

我知道这也取决于编码。我刚刚看到 MySQL 模式使用“latin1 - 默认集合”字符集。

4

2 回答 2

1

我想我用这段代码得到了它:

public String cutStringForTEXT(String string) {
    String ENCODING = "ISO-8859-1";
    int FIELD_SIZE = 65535;
    try {
        byte[] bytes = string.getBytes(ENCODING);
        if (bytes.length >= FIELD_SIZE) {
            return new String(Arrays.copyOfRange(bytes, 0, FIELD_SIZE), ENCODING);
        }
    } catch (UnsupportedEncodingException ex) {
    }
    return string;
}

如果它太长,那么我获取字节数组的子集并将其转换回字符串。

于 2013-04-22T15:28:21.253 回答
0

如果您正在使用 php 在数据库中插入值,您可以让 php 在将变量插入数据库之前检查变量的大小。如果变量太长,你可以让它砍掉超过大小限制的部分。

于 2013-04-22T15:20:47.880 回答