2013-07-18 62 views
2

我有一个SqlDataSource<asp:ListView>设置处理的另一种形式的意见,具有以下文本:截断字符串数据误差(最大)字段

<asp:TextBox ID="CommentTextBox" runat="server" Text='<%# Bind("Comment") %>' Width="400px" Height="125px" TextMode="MultiLine" /> 

数据源具有以下InsertCommandasp:Parameter设置就可以了:

InsertCommand="INSERT INTO [tblSLS_SpecComments] ([SpecID], [Author], [Comment]) VALUES (@SpecID, @Author, @Comment)" 
    <asp:Parameter Name="SpecID" Type="Int32" /> 
    <asp:Parameter Name="Author" Type="String" /> 
    <asp:Parameter Name="Comment" Type="String" /> 

当我尝试插入一个较长的注释(一个例子是500“F的),我得到一个错误:

String or binary data would be truncated.
The statement has been terminated.

我插入的列是数据类型nvarchar(max),所以它应该能够保存一本书的字符价值,这比我交付的字符要少得多。

有关发生了什么的任何线索?

+0

是否可以超过作者列的长度? –

+1

不应该。作者被设置为nvarchar(50),并且在后面的代码中被截断以仅作为用户名(验证过)。 – Crimius

+0

@Crimius - 使用SQL Server Profiler来跟踪正在执行的查询。你可以看到到底发生了什么。我会认为Mush先生在这里是正确的:) – Meff

回答

0

Nvarchar(Max)不能成为该错误的来源。检查this问题 检查其他字段,如Author,并使用MaxLenghttexbox的财产尽可能。

1

你可以检查你的表是否有任何触发到另一个数据表,触发器尝试插入/更新值到较小的字段。

0

在我尝试从nvarchar(max)字段中插入设计器的长数值(编辑顶部200行...)时发生了这种情况。

当我从查询窗口手动运行更新它的工作。