在keyvaluepair中传递数据表作为对象时,如何防止数据库中的字符串被限制为4000个字符?在以下代码中,如果字符串是> 4000个字符,则不会将其写入数据库,但是调试会标识数据表中的列确实具有> 4000个字符串字符串:
conn.Open();
SqlCommand cmd = new SqlCommand(storedProcedureName, conn);
cmd.CommandType = CommandType.StoredProcedure;
// Handle the parameters
if (args != null)
{
foreach (KeyValuePair<string, object> arg in args)
{
SqlParameter param;
param = new SqlParameter();
param.ParameterName = "@" + arg.Key;
param.Value = arg.Value;
cmd.Parameters.Add(param);
}
}
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
// Fill the DataTable.
adapter.Fill(dt);
答案 0 :(得分:1)
也许你必须明确地将参数类型设置为SqlDbType.NVarChar
param.SqlDbType = SqlDbType.NVarChar;
引自MSDN:
NVarChar:String。可变长度的Unicode字符流 范围在1到4,000个字符之间。如果隐式转换失败 该字符串大于4,000个字符。 显式设置对象 使用超过4,000个字符的字符串时。使用NVarChar 当数据库列为nvarchar(max)时。