我通常在ADO.NET中创建参数时设置列的大小。

但是,如果列的类型是VARCHAR(MAX),我该使用多大的大小呢?

cmd.Parameters.Add("@blah", SqlDbType.VarChar, ?????).Value = blah;

在这种情况下,你使用-1。


对于那些没有看过Michal Chaniewski写的-1的人,完整的代码行:

cmd.Parameters.Add("@blah",SqlDbType.VarChar,-1).Value = "some large text";

最大SqlDbType。VarChar大小为2147483647。

如果要使用通用的oledb连接而不是sql,我发现这里还有一个LongVarChar数据类型。它的最大大小是2147483647。

cmd.Parameters.Add("@blah", OleDbType.LongVarChar, -1).Value = "very big string";

你不需要传递size参数,只需声明Varchar已经理解它是MAX:

cmd.Parameters.Add("@blah",SqlDbType.VarChar).Value = "some large text";

如果你这样做:

    cmd.Parameters.Add("@blah",SqlDbType.VarChar).Value = "some large text";

大小将取自“一些大文本”。长度

当它是一个输出参数时,这可能是有问题的,你得到的字符比你输入的字符少。