0

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

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

4

1 回答 1

0

Adaptive Server 将条目截断为指定的列长度,不会发出警告或错误,除非您设置string_rtruncation on. 请参阅参考手册:命令。

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");
}
于 2012-12-17T12:38:41.897 回答