C# SqlConnection.CreateCommand和new SqlCommand之间有什么区别吗?
在.Net中,创建一个新的C# SqlConnection.CreateCommand和new SqlCommand之间有什么区别吗?,c#,ado.net,C#,Ado.net,在.Net中,创建一个新的SqlCommand对象与将SqlConnection附加到对象上并对现有的SqlConnection对象调用CreateCommand()之间在功能上有什么区别吗?不,它们是一样的 我反汇编了SqlConnection.CreateCommand,发现: public SqlCommand CreateCommand() { return new SqlCommand(null, this); } 这证明了他们真的是同一件事。不,他们是同一件事 我反
SqlCommand
对象与将SqlConnection
附加到对象上并对现有的SqlConnection
对象调用CreateCommand()
之间在功能上有什么区别吗?不,它们是一样的
我反汇编了SqlConnection.CreateCommand
,发现:
public SqlCommand CreateCommand()
{
return new SqlCommand(null, this);
}
这证明了他们真的是同一件事。不,他们是同一件事 我反汇编了
SqlConnection.CreateCommand
,发现:
public SqlCommand CreateCommand()
{
return new SqlCommand(null, this);
}
这证明了它们确实是同一个东西。从功能上说,它们完全相同
但是,
SqlConnection.CreateCommand()
可以让您更加不知道所使用的数据库类型。例如,您可以将其作为DbConnection
传递,而不是传递SqlConnection
实例,这将产生一个DbCommand
,它们在功能上完全相同
但是,
SqlConnection.CreateCommand()
可以让您更加不知道所使用的数据库类型。例如,您可以将SqlConnection
实例作为DbConnection
进行传递,而不是传递一个SqlConnection
实例,这将产生一个DbCommand
,它们执行相同的操作。SqlConnection.CreateCommand
背后的基本原理是实现工厂模式。它们做同样的事情。SqlConnection.CreateCommand
背后的基本原理是实现工厂模式。这可能不言而喻,但完整地说,有一个区别。如果创建SqlCommand,则可以将CommandText作为参数传入。如果让SqlConnection创建命令,则没有提供CommandText的规定。因为您可以只设置SqlCommand的CommandText属性,区别很小,但它确实存在
SqlConnection db = new SqlConnection();
SqlCommand cmd = db.CreateCommand();
cmd.CommandText = "select @@version";
或
这可能不言而喻,但完整地说,有一个区别。如果创建SqlCommand,则可以将CommandText作为参数传入。如果让SqlConnection创建命令,则没有提供CommandText的规定。因为您可以只设置SqlCommand的CommandText属性,区别很小,但它确实存在
SqlConnection db = new SqlConnection();
SqlCommand cmd = db.CreateCommand();
cmd.CommandText = "select @@version";
或