如何在C#中创建NVarchar(max) Sqlparameter?
如何在C#中创建NVarchar(max) Sqlparameter?
这个问题已经有了答案:
我有以下代码,使用存储过程查询一个 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日
这是如何显式设置nvarchar(max)的方法:
cmd.Parameters.Add("@JobNumbers", SqlDbType.NVarChar, -1);
如果你真的关注性能,你可能会考虑传递一个整数表:
https://stackoverflow.com/a/10779593/465509