代码改变世界

创建 DbCommand 对象

2008-09-11 15:17  晓彦  阅读(2056)  评论(0)    收藏  举报


数据访问应用程序块提供了获取 ADO.NET DbCommand 对象的的统一方法。应用程序块的数据访问方法包含了接受 DbCommand 对象的重载。如果用 DbCommand 对象来使用重载,在调用存储过程时将可以进行更多的控制。例如,如果使用 DbCommand 对象,就可以使用在输出参数中返回多个结果的存储过程。另外,DbCommand 对象允许指定存储过程的超时值。

创建 DbCommand 对象的方法分为二种类型:

  • 表示存储过程调用的那些方法(例如,GetCustomers)
  • 表示 SQL 文本命令的那些方法(例如,Select CustomerID, Fullname From Customers )


调用的获取 DbCommand 对象的方法由是要执行内联的 SQL 还是调用存储过程来决定。用于存储过程的创建 DbCommand 对象的方法还提供参数缓存。关于参数缓存的更多信息,请参见处理参数。

所有 DbCommand 对象的创建都使用 Database 类的方法,这些方法如下:

  • GetStoredProcCommand。此方法用于存储过程命令。
  • GetSqlStringCommand。此方法用于 SQL 文本命令。


二个方法都返回一个 DbCommand 对象。

注意:SQL Server CE 不支持存储过程,用内联 SQL 语句来代替。更多信息,请参见创建 Database 对象的细节。




用于 SQL 语句的 DbCommand对象

使用 GetSqlStringCommand 方法创建用于内联 SQL 语句的 DbCommand 对象。特定的 SQL 命令在方法调用时做为一个参数进行传递。

下列代码展示了如何使用 GetSqlStringCommand

C#

Database db = DatabaseFactory.CreateDatabase();

string sqlCommand = "Select CustomerID, LastName, FirstName From Customers";

DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);

 

Visual Basic

Dim db As Database = DatabaseFactory.CreateDatabase()

Dim sqlCommand As String = "Select CustomerID, LastName, FirstName From Customers"

Dim dbCommand As DbCommand = db.GetSqlStringCommand(sqlCommand)




用于存储过程的 DbCommand 对象

要执行存储过程,必须使用 GetStoredProcCommand 方法来创建 DbCommand 对象。要执行存储过程的名称在方法调用时做为一个参数传递。

下列代码展示了如何使用 GetStoredProcCommand

C#

Database db = DatabaseFactory.CreateDatabase();

 

DbCommand dbCommand = db.GetStoredProcCommand("GetProductsByCategory");

 

Visual Basic

Dim db As Database = DatabaseFactory.CreateDatabase()

 

Dim dbCommand As DbCommand

dbCommand = db.GetStoredProcCommand("GetProductsByCategory")

 

注意:存储过程的参数受 Database 类的方法的支持。关于如何使用存储过程参数参数的更多信息,请参见处理参数。