SqlConnection.CreateCommand和新的SqlCommand之间有什么区别吗?

时间:2009-08-19 21:59:27

标签: c# ado.net

在.Net中,创建新的SqlCommand对象与附加SqlConnection并在现有CreateCommand()对象上调用SqlConnection之间是否存在任何功能差异?< / p>

4 个答案:

答案 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);