3

将 dbexpress 驱动程序从 10 迁移到 11 时遇到问题。

我有以下代码在 SQL Server 中执行更新语句:

sql.add('UPDATE mytable SET myfield=:AFIELD');
ParamByName('AFIELD').AsString := 'Some random string that is too long for the field';
Open;

它将引发 SQL 错误异常并停止执行。 字符串或二进制数据将被截断

这是由于 myfield 中的字符串比表字段长度长,myfield 是 Varchar(10)

以前,代码运行良好,进入字段的字符串会自动截断为 10 个字符。

我想知道您是否可以提供有关配置连接以使自动截断工作的任何提示。或任何变通方法。非常感谢!~~~

4

1 回答 1

2

您可以发出命令SET ANSI_WARNINGS OFF

但这并不是真正值得推荐的,因为 SQL Server 中的某些功能需要启用 ANSI_WARNINGS。

所以最好自己截断数据,即

ParamByName('AFIELD').AsString := Copy(VeryLongString, 1, 10);

于 2011-04-10T07:44:38.943 回答