Sql server2008,定义字段为nvarchar(max),但更新时出现大小限制错误

时间:2021-03-18 17:22:12
定义字段为:
   wordcontent, nvarchar(max),

使用sql语句


            List<SqlParameter> listParams = new List<SqlParameter>();
            listParams.Add(new SqlParameter("@wordtitle", edoc.wordtitle));
            listParams.Add(new SqlParameter("@wordcontent", edoc.wordcontent));
            listParams.Add(new SqlParameter("@ownerid", uid));
            listParams.Add(new SqlParameter("@wordtype", edoc.wordtype));

                strSQL = string.Format("UPDATE [TBC_VMeeting].[dbo].[TBE_Exam_ReadArtcles] SET [wordtitle] = @wordtitle " +
                                ",[wordgrade] = @wordgrade ,[wordcontent] = @wordcontent,[wrodscount] = @wordscount ,[readtimer] = @readtimer, " +
                                " [ownerid] = @ownerid  WHERE [wordid] = {0}", edoc.wordid);
                if (MsSQLHelper.Instance.ExecuteCommand(strSQL, listParams.ToArray()) > 0)



执行的时候出现错误

参数化查询 '(@wordtitle nvarchar(7),@wordgrade int,@wordcontent nvarchar(400' 需要参数 '@wordcontent',但未提供该参数。


参数化查询 '(@wordtitle nvarchar(7),@wordgrade int,@wordcontent nvarchar(400' 需要参数 '@wordcontent',但未提供该参数。


其中 赋值给 [wordcontent] 的字符串内容为 5K左右的html格式文档

请大家指点

7 个解决方案

#1


1、错误提示说的是参数个数不对应并没有提示长度的问题。
2、你的内容是html格式文档,里面可能会有单引号,拼接的时候导致字符中断。
3、[wrodscount] 这个字段的拼写有点小问题吧?

#2


断点调试一下strSQL ,看看结果直接放到sql里面执行,报错不。
如果是参数中单引号的问题,提前替换一下用''替换参数中的'。

#3


引用 2 楼  的回复:
断点调试一下strSQL ,看看结果直接放到sql里面执行,报错不。
如果是参数中单引号的问题,提前替换一下用''替换参数中的'。


谢谢回复,[wrodscount] 这个字段是存在的,代码是我精简了的

这个是sql语句错误,而且肯定是内容超了,因为我把赋值减少的话,就可以执行了,请问
我用的是 MAX ,为什么这儿提示是 nvarchar(400'  呢

#4


引用 3 楼  的回复:
引用 2 楼  的回复:

断点调试一下strSQL ,看看结果直接放到sql里面执行,报错不。
如果是参数中单引号的问题,提前替换一下用''替换参数中的'。


谢谢回复,[wrodscount] 这个字段是存在的,代码是我精简了的

这个是sql语句错误,而且肯定是内容超了,因为我把赋值减少的话,就可以执行了,请问
我用的是 MAX ,为什么这儿提示是 nvarchar(4……


你定义的max 是字段的长度。

提示的是变量的长度。

@wordcontent 是变量 wordcontent 是字段。

#5


我整体的测试了一下,好像不能超过4000个字符,超过即报错,请问哪儿有设置吗?

这个是我从编辑器截取的字数统计:当前已输入 3628 个字符,这个地方超过4000即提示错误,范围内都可以

#6


换类型啊。。用text

#7


请版主帮助啊

#1


1、错误提示说的是参数个数不对应并没有提示长度的问题。
2、你的内容是html格式文档,里面可能会有单引号,拼接的时候导致字符中断。
3、[wrodscount] 这个字段的拼写有点小问题吧?

#2


断点调试一下strSQL ,看看结果直接放到sql里面执行,报错不。
如果是参数中单引号的问题,提前替换一下用''替换参数中的'。

#3


引用 2 楼  的回复:
断点调试一下strSQL ,看看结果直接放到sql里面执行,报错不。
如果是参数中单引号的问题,提前替换一下用''替换参数中的'。


谢谢回复,[wrodscount] 这个字段是存在的,代码是我精简了的

这个是sql语句错误,而且肯定是内容超了,因为我把赋值减少的话,就可以执行了,请问
我用的是 MAX ,为什么这儿提示是 nvarchar(400'  呢

#4


引用 3 楼  的回复:
引用 2 楼  的回复:

断点调试一下strSQL ,看看结果直接放到sql里面执行,报错不。
如果是参数中单引号的问题,提前替换一下用''替换参数中的'。


谢谢回复,[wrodscount] 这个字段是存在的,代码是我精简了的

这个是sql语句错误,而且肯定是内容超了,因为我把赋值减少的话,就可以执行了,请问
我用的是 MAX ,为什么这儿提示是 nvarchar(4……


你定义的max 是字段的长度。

提示的是变量的长度。

@wordcontent 是变量 wordcontent 是字段。

#5


我整体的测试了一下,好像不能超过4000个字符,超过即报错,请问哪儿有设置吗?

这个是我从编辑器截取的字数统计:当前已输入 3628 个字符,这个地方超过4000即提示错误,范围内都可以

#6


换类型啊。。用text

#7


请版主帮助啊