在 .Net 中,创建一个新的
SqlCommand
对象并将 SqlConnection
附加到它上面与在现有的 SqlConnection
对象上调用 CreateCommand()
方法之间是否存在任何功能上的区别?SqlConnection.CreateCommand
并发现了这个。public SqlCommand CreateCommand()
{
return new SqlCommand(null, this);
}
这证明它们确实是同一件事。
它们做的事情是一样的。 SqlConnection.CreateCommand
的原理是实现工厂模式。
从功能上来说,它们完全相同。
但是,SqlConnection.CreateCommand()
可以让你对所使用的数据库类型更加不可知。例如,你可以将它作为一个DbConnection
传递,而不是作为一个SqlConnection
实例,这将产生一个DbCommand
。
这可能是显而易见的,但为了完整起见,有一个区别。如果您创建一个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);