如何在C#中创建NVarchar(max) Sqlparameter?

5 浏览
0 Comments

如何在C#中创建NVarchar(max) Sqlparameter?

这个问题已经有了答案:

在参数声明中,你使用varchar(MAX)的什么大小?

我有以下代码,使用存储过程查询一个 DataTable,输入一个字符串参数 @JobNumbers,它是由一系列工作编号动态创建的字符串(因此其长度未知):

using (SqlConnection connection = new SqlConnection(con))
        {
            SqlCommand cmd = new SqlCommand("dbo.Mystoredprocedure", connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@JobNumbers", SqlDbType.VarChar, 4000);
            cmd.Parameters["@JobNumbers"].Value = JobNumber;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            connection.Open();
            da.Fill(JobDetails);
        }

如你所见,我目前将 JobNumber 参数设置为长度为 4000,这应该足以包含约500个作业编号。然而,有时候可能需要更多。所以,我想知道,是否有一种方式将参数设置为等效的 sql 参数类型 nvarchar(max)?

我查看了许多类似的问题(什么是向 SqlCommand 传递参数的最佳方法?),但没有一个明确回答是否可以(或不可以)这样做。第二个问题是,即使我在存储过程中将 @JobNumber 参数设置为 nvarchar(max),是否有必要在 C# 中设置长度?如果我这样做,是否会像这个问题中所示的那样引起潜在的性能问题:在添加 SqlCommand 参数时,\"SqlDbType\" 和 \"size\" 应该在什么时候使用?

admin 更改状态以发布 2023年5月21日
0
0 Comments

这是如何显式设置nvarchar(max)的方法:

cmd.Parameters.Add("@JobNumbers", SqlDbType.NVarChar, -1);

如果你真的关注性能,你可能会考虑传递一个整数表:
https://stackoverflow.com/a/10779593/465509

0