2011-06-14 158 views
0

使用sql 2005时,看起来我无法在nvarchar(max)字段中插入超过8000个字符。在nvarchar(max)字段中插入MSSQL超过8000个字符

这真是令人费解。我试图插入,更新和更新。写入没有运气。我无法将其完全插入到控制台和.net中,我始终得到的错误是

数据类型text和varchar在add运算符中不兼容。

INSERT语句

insert into tablename (columnname) values (' long text'); 

更新:

update tablename set columnname='long text' 

一切总是在8000个字符(文字11000个字)截断。运行一些测试,我看到

select @@textsize 

给人2147483647

任何想法我可能是错在这里做什么?

+0

那么“数据类型文本”位从哪里来?毕竟你有一个“文字”字段吗? – GSerg 2011-06-14 21:21:46

+0

它被截断,还是出现错误?从你的问题文本中不清楚。 – 2011-06-14 21:23:01

+0

当我从控制台插入它被截断。 – anurodhp 2011-06-14 21:24:11

回答

4

您的代码会在某处截断值。你没有包括整个代码,所以我们不能猜到,其中它被截断。通常的地方是参数声明。正确的代码应该是这样的:

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(); 
0
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(); 
     } 

} 
0

我只是有这个问题,并最终跟踪它到的ADO常量我使用在调用存储过程的VBA代码。我原来是adVarChar这给了我“字符串数据,右截断”的消息,但是当我换了这一点,对于adLongVarChar现在工作得很好

0

cmd.Paramaters.Add(“@参数”,SqlDbType.NVarChar, - 1)。价值= parametervaluehere;

其中-1表示varchar/nvarchar数据类型的最大长度。

相关问题