【发布时间】:2010-11-01 16:13:54
【问题描述】:
我通常在 ADO.NET 中创建参数时设置列大小。
但是如果列的类型是VARCHAR(MAX),我应该使用什么大小?
cmd.Parameters.Add("@blah", SqlDbType.VarChar, ?????).Value = blah;
【问题讨论】:
标签: c# sql-server ado.net
我通常在 ADO.NET 中创建参数时设置列大小。
但是如果列的类型是VARCHAR(MAX),我应该使用什么大小?
cmd.Parameters.Add("@blah", SqlDbType.VarChar, ?????).Value = blah;
【问题讨论】:
标签: c# sql-server ado.net
在这种情况下,您使用 -1。
【讨论】:
对于我们这些没有看到 Michal Chaniewski 的 -1 的人来说,完整的代码行:
cmd.Parameters.Add("@blah",SqlDbType.VarChar,-1).Value = "some large text";
【讨论】:
最大 SqlDbType.VarChar 大小为 2147483647。
如果您使用通用 oledb 连接 而不是 sql,我发现 here 还有一个 LongVarChar 数据类型。它的最大尺寸是 2147483647。
cmd.Parameters.Add("@blah", OleDbType.LongVarChar, -1).Value = "very big string";
【讨论】:
如果你这样做:
cmd.Parameters.Add("@blah",SqlDbType.VarChar).Value = "some large text";
大小将取自“一些大文本”。长度
当它是一个输出参数时,这可能会出现问题,当您输入输入时,您将无法返回更多字符。
【讨论】:
SqlParameter 感到异常,即使我确实分配了一个值 - 但是,我没有使用 Add 的重载,而是创建SqlParameter 实例本人。您正在使用的Add 的重载是否已经将Size 初始化为可能的东西?
不需要传递size参数,只要声明Varchar已经明白是MAX就好了:
cmd.Parameters.Add("@blah",SqlDbType.VarChar).Value = "some large text";
【讨论】: