日期:2014-05-19  浏览次数:20427 次

NTest类型的字段通过存储过程只能插入16个字符,请指教。
这是传值的内容:
SqlParameter[]   part={
data.MakeInParam( "@Title ",SqlDbType.NVarChar,50,Title.Trim()),
data.MakeInParam( "@ContentList ",SqlDbType.NText,16,ContentList),
data.MakeInParam( "@DocumentType ",SqlDbType.Int,20,   DocumentType),
data.MakeInParam( "@CreateName ",SqlDbType.NVarChar,20,CreateName.Trim()),
data.MakeInParam( "@CreateTime ",SqlDbType.DateTime,30,CreateTime)                        
};

下面是存储过程中的内   容:
CREATE   proc   Sp_work_Addwork
      @Title   NVarchar(50),
      @ContentList   NText,
      @DocumentType   Int,
      @CreateName   NVarChar(20),
      @CreateTime   DateTime  

AS
     
    insert   into   UDS_WorkPlan(Title,ContentList,DocumentType,CreateName,CreateTime)  
    values(@Title,@ContentList,@DocumentType,@CreateName,@CreateTime)
GO

请朋友们批点一下吧,上面传的值如果在SQL查询分析器中,利用存储过程中的语句进行插入操作也没有问题,可是通过程序执行的就是不行。这个问题已经困扰我好长时间了,谢谢。

------解决方案--------------------
data.MakeInParam( "@ContentList ",SqlDbType.NText,16,ContentList),

這句代碼修改下

16改為大些的長度


------解决方案--------------------
感覺是傳入參數的時候給截斷了的。
------解决方案--------------------
exec sp_tableoption @tablenamepattern = 'table '
,@optionname= 'text in row '
,@optionvalue= 'value '
value 为0或off时关闭text in row 数据行只存储指向数据存放位置的指针,当vlue为24-7000时,开启text in row ,符合长度的数据直接被存在数据行里,此时查看数据列的值:)
------解决方案--------------------
上面传的值如果在SQL查询分析器中,利用存储过程中的语句进行插入操作也没有问题,可是通过程序执行的就是不行

那只能说明是程序的问题,检查一下程序吧,看看在插入之前的字符串是否正常