在 C# 中使用存储过程时,经常会遇到如下代码:
string sql = "GetClientDefaults"; SqlCommand cmd = new SqlCommand(sql); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@computerName", computerName);
但是,问题出现了: cmd.CommandType = CommandType.StoredProcedure; 这行是吗?必要的,以及不使用它的潜在影响是什么?
根据性能测试,无论您使用 CommandType.Text 还是 CommandType.StoredProcedure,SQL Server 都会执行参数化。但是,当使用 CommandType.StoredProcedure 时,SQL Server 可以更有效地完成参数化。这使得使用 CommandType.StoredProcedure 具有速度优势。
使用 CommandType.Text 时,在 CommandText 本身中包含参数名称至关重要。这是因为 SQL Server 使用 sp_executesql 包装器来参数化语句,不会自动传递参数名称。因此,您必须手动指定它们以确保正确执行。
例如,如果您创建这样的过程:
create procedure dbo.Test ( @Text1 varchar(10) = 'Default1' ,@Text2 varchar(10) = 'Default2' ) as begin select @Text1 as Text1, @Text2 as Text2 end
然后使用 CommandType.Text 调用它,则必须包含CommandText 中的参数名称:
string callText = "dbo.Test @Text1, @Text2";
否则,您将遇到错误,指示指定的参数不是
总结:
以上是在 C# 中执行存储过程时需要 `cmd.CommandType = CommandType.StoredProcedure;` 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!