在.Net中,创建新的SqlCommand
对象与附加SqlConnection
并在现有CreateCommand()
对象上调用SqlConnection
之间是否存在任何功能差异?< / p>
答案 0 :(得分:36)
不,他们是一回事。
我反汇编SqlConnection.CreateCommand
并发现了这个:
public SqlCommand CreateCommand()
{
return new SqlCommand(null, this);
}
证明他们真的是一回事。
答案 1 :(得分:12)
他们做同样的事情。 SqlConnection.CreateCommand
背后的基本原理是实现工厂模式。
答案 2 :(得分:8)
在功能上它们完全相同。
但是,SqlConnection.CreateCommand()
可让您更加了解您正在使用的DB类型。例如,您可以将SqlConnection
实例传递给DbConnection
,而不是传递DbCommand
实例。{/ 1}}会产生{{1}}。
答案 3 :(得分:1)
这可能不言而喻,但只是要完整,有一点不同。如果创建SqlCommand,则可以将CommandText作为参数传递。如果您使用SqlConnection CreateCommand,则没有提供CommandText的规定。既然你可以设置SqlCommand的CommandText属性,那么区别很小,但确实存在。
SqlConnection db = new SqlConnection();
SqlCommand cmd = db.CreateCommand();
cmd.CommandText = "select @@version";
或
SqlConnection db = new SqlConnection();
SqlCommand cmd = new SqlCommand("select @@version", db);