如何在C#中创建NVarchar(max)Sql参数?

我有以下代码使用存储过程拉回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个作业号并且应该足够了。 但是,有可能在奇怪的场合需要更多。 所以,我想知道,有没有办法将参数设置为nvarchar(max)的等效sql参数类型?

我已经看过各种类似的问题( 将参数传递给SQLCommand的最佳方法是什么? )但没有具体说明你是否可以(或不能)这样做。 其次,如果我将存储过程中的@JobNumber参数设置为nvarchar(max),甚至需要这样做,因此我可能根本不需要在C#中设置长度? 如果我这样做,这将有潜在的性能问题,如此问题中所建议的在添加SqlCommand参数时何时应该使用“SqlDbType”和“size”? ?

这是你明确设置nvarchar(max)的方法:

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

如果您真的关心性能,可能需要考虑传递一个整数表: https : //stackoverflow.com/a/10779593/465509