如何检测字符串截断

时间:2012-12-17 10:33:51

标签: sybase-ase jtds

我使用jTDS 1.2.6连接Adaptive Server Enterprise / 15.7.0。 当预准备语句在具有VARCHAR(16)列的表中插入行时,字符串将被静默截断。 插入成功,没有警告,并且没有引发DataTruncation异常,而编码的字符串被截断为16个八位字节。

我怎样才能检测到字符串截断?

1 个答案:

答案 0 :(得分:0)

除非设置string_rtruncation on,否则Adaptive Server会将条目截断为指定的列长度而不会出现警告或错误。请参见“参考手册:命令”。

MSSQL始终检测字符串的截断,并且选项STRING_RTRUNCATION不存在。以下是jTDS SAfeTest.testDataTruncException()

的摘录
Statement stmt = con.createStatement();
if (!con.getMetaData().getDatabaseProductName().toLowerCase().startsWith("microsoft")) {
    // By default Sybase will silently truncate strings,
    // set an option to ensure that an exception is thrown.
     stmt.execute("SET STRING_RTRUNCATION ON");
}