使用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
我在这里做错了什么想法?
答案 0 :(得分: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();
答案 1 :(得分: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();
}
}
答案 2 :(得分:0)
我刚刚遇到这个问题并最终将其跟踪到我在调用存储过程的VBA代码中使用的ADO常量。最初我是adVarChar,它给了我“字符串数据,右截断”的消息,但当我把它换成adLongVarChar它现在工作正常
答案 3 :(得分:0)
cmd.Parameters.Add(“@ param”,SqlDbType.NVarChar,-1).Value =参数值here;
其中-1表示varchar / nvarchar数据类型的最大长度。