在nvarcharmax字段中插入超过8000个字符的MSSQL

问题描述

|| 使用sql 2005时,似乎无法在nvarchar(max)字段中插入超过8000个字符。 这真令人困惑。我尝试插入,更新和更新.write没有运气。我无法将其完全插入控制台和.net中,我始终遇到的错误是   数据类型text和varchar在add运算符中不兼容。 插入语句是
insert into tablename (columnname) values (\' long text\'); 
更新:
update tablename set columnname=\'long text\' 
一切总是被截断为8000个字符(文本为11,000个字符)。运行一些测试,我看到了
select @@textsize
给2147483647 有什么想法我可能在这里做错了吗?     

解决方法

        您的代码会在某处截断该值。您没有包括完整的代码,因此我们无法猜测其截断的位置。通常的地方是参数声明。正确的代码应如下所示:
SqlCommand cmd = new SqlCommand(
     @\"insert into table (column) values (@param)\",conn,trn);
cmd.Paramaters.Add(\"@param\",SqlDbType.NVarChar,-1);
cmd.Parameters[\"@param\"].Value = myLongVariable;
cmd.ExecuteNonQuery();
    ,        
using (System.Data.SqlClient.SqlConnection con = new 
    SqlConnection(\"YourConnection string\")) 
{ 
      con.Open(); 
      using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
      {
           string expression = \"long text.................................\"; 
           cmd.CommandType = CommandType.StoredProcedure; 
           cmd.CommandText = \"Your Stored Procedure\"; 
           cmd.Parameters.Add(\"Your long text Parameter Name \",SqlDbType.NVarChar).Value = expression;    
           cmd.Connection = con; 
           cmd.ExecuteNonQuery();
      }

}
    ,        我刚刚遇到了这个问题,最终将其追溯到我在调用存储过程的VBA代码中使用的ADO常量。最初我是adVarChar,它给了我“字符串数据,正确的截断”消息,但是当我将其换成adLongVarChar时,它现在可以正常工作     ,         cmd.Paramaters.Add(\“ @ param \”,SqlDbType.NVarChar,-1).Value =此处为参数值; 其中-1表示varchar / nvarchar数据类型的最大长度。