1、SqlCommand 类 表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。 此类不能被继承。 继承层次结构 System.Object System.MarshalByRefObject System.ComponentModel.Component System.Data.Common.DbCommand System.Data.SqlClient.SqlCommand 命名空间: System.Data.SqlClient 程序集: System.Data(在 System.
2、Data.dll 中) 语法 public sealed class SqlCommand : DbCommand, ICloneable SqlCommand 类型公开以下成员。 构造函数 名称 说明 SqlCommand 初始化 SqlCommand 类的新实例。 SqlCommand(String) 用查询文本初始化 SqlCommand 类的新实例。 SqlCommand(String, SqlConnection) 初始化具有查询文本和 SqlConnection 的 SqlCommand 类的新实例。
3、 SqlCommand(String, SqlConnection, SqlTransaction) 使用查询文本、SqlConnection 以及 SqlTransaction 初始化 SqlCommand 类的新实例。 属性 名称 说明 CanRaiseEvents 获取一个指示组件是否可以引发事件的值。 (继承自 Component。) CommandText 获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程。 (重写 DbCommand.CommandText。) CommandTimeout 获取或设置
4、在终止执行命令的尝试并生成错误之前的等待时间。 (重写 DbCommand.CommandTimeout。) CommandType 获取或设置一个值,该值指示如何解释 CommandText 属性。 (重写 DbCommand.CommandType。) Connection 获取或设置 SqlCommand 的此实例使用的 SqlConnection。 Container 获取 IContainer,它包含 Component。 (继承自 Component。) DbConnection 获取或设置此 DbCommand 使用的 DbConnect
5、ion。 (继承自 DbCommand。) DbParameterCollection 获取 DbParameter 对象的集合。 (继承自 DbCommand。) DbTransaction 获取或设置将在其中执行此 DbCommand 对象的 DbTransaction。 (继承自 DbCommand。) DesignMode 获取一个值,用以指示 Component 当前是否处于设计模式。 (继承自 Component。) DesignTimeVisible 获取或设置一个值,该值指示命令对象是否应在 Windows 窗体设计器控件中可见。 (重写
6、 DbCommand.DesignTimeVisible。) Events 获取附加到此 Component 的事件处理程序的列表。 (继承自 Component。) Notification 获取或设置一个指定与此命令绑定的 SqlNotificationRequest 对象的值。 NotificationAutoEnlist 获取或设置一个值,该值指示应用程序是否应自动接收来自公共 SqlDependency 对象的查询通知。 Parameters 获取 SqlParameterCollection。 参数化查询 方法:add,clear,ins
7、ert,remove Site 获取或设置 Component 的 ISite。 (继承自 Component。) Transaction 获取或设置将在其中执行 SqlCommand 的 SqlTransaction。 UpdatedRowSource 获取或设置命令结果在由 DbDataAdapter 的“Update”方法使用时,如何应用于 DataRow。 (重写 DbCommand.UpdatedRowSource。) 方法 名称 说明 BeginExecuteNonQuery 启动此 SqlCommand 描述的 Tra
8、nsact-SQL 语句或存储过程的异步执行。 BeginExecuteNonQuery(AsyncCallback, Object) 如果提供回调过程和状态信息,则启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。 BeginExecuteReader 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并从服务器中检索一个或多个结果集。 BeginExecuteReader(CommandBehavior) 使用 CommandBehavior 值之一,启动此 SqlComma
9、nd 描述的 Transact-SQL 语句或存储过程的异步执行。 BeginExecuteReader(AsyncCallback, Object) 如果提供回调过程和状态信息,则启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并从服务器中检索一个或多个结果集。 BeginExecuteReader(AsyncCallback, Object, CommandBehavior) 在给定回调过程和状态信息的情况下,通过使用 CommandBehavior 值之一并从服务器中检索一个或多个结果集,初始化由此 SqlCommand
10、描述的 Transact-SQL 语句或存储过程的异步执行。 BeginExecuteXmlReader 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并将结果作为 XmlReader 对象返回。 BeginExecuteXmlReader(AsyncCallback, Object) 使用回调过程启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并将结果作为 XmlReader 对象返回。 Cancel 尝试取消 SqlCommand 的执行。 (重写 DbCommand.
11、Cancel。) Clone 创建作为当前实例副本的新 SqlCommand 对象。 CreateDbParameter 创建 DbParameter 对象的新实例。 (继承自 DbCommand。) CreateObjRef 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。) CreateParameter 创建 SqlParameter 对象的新实例。 Dispose 释放由 Component 使用的所有资源。 (继承自 Component。) Dis
12、pose(Boolean) 释放 Component 占用的非托管资源,也可以选择释放托管资源。 (继承自 Component。) EndExecuteNonQuery 完成 Transact-SQL 语句的异步执行。 EndExecuteReader 完成 Transact-SQL 语句的异步执行,返回请求的 SqlDataReader。 EndExecuteXmlReader 完成 Transact-SQL 语句的异步执行,将请求的数据以 XML 形式返回。 Equals(Object) 确定指定的 Object 是否等于当前的 Objec
13、t。 (继承自 Object。) ExecuteDbDataReader 对连接执行命令文本。 (继承自 DbCommand。) ExecuteNonQuery 对连接执行 Transact-SQL 语句并返回受影响的行数。 (重写 DbCommand.ExecuteNonQuery。) ExecuteReader 将 CommandText 发送到 Connection 并生成一个 SqlDataReader。 ExecuteReader(CommandBehavior) 将 CommandText 发送到 Connection,并使用 Comman
14、dBehavior 值之一生成一个 SqlDataReader。 ExecuteScalar 执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。 (重写 DbCommand.ExecuteScalar。) ExecuteXmlReader 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。 Finalize 在通过垃圾回收将 Component 回收之前,释放非托管资源并执行其他清理操作。 (继承自 Component。) GetHashCode 用作特定类型的哈希函数。 (继承自 O
15、bject。) GetLifetimeService 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。) GetService 返回一个对象,该对象表示由 Component 或它的 Container 提供的服务。 (继承自 Component。) GetType 获取当前实例的 Type。 (继承自 Object。) InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。) MemberwiseClone
16、 创建当前 Object 的浅表副本。 (继承自 Object。) MemberwiseClone(Boolean) 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。) Prepare 在 SQL Server 的实例上创建命令的一个准备版本。 (重写 DbCommand.Prepare。) ResetCommandTimeout 将 CommandTimeout 属性重置为其默认值。 ToString 返回包含 Component 的名称的 String(如果有)。 不应重写此方法
17、 (继承自 Component。) 事件 名称 说明 Disposed 当通过调用 Dispose 方法释放组件时发生。 (继承自 Component。) StatementCompleted 当 Transact-SQL 语句执行完成时发生。 显式接口实现 名称 说明 ICloneable.Clone 创建作为当前实例副本的新 SqlCommand 对象。 IDbCommand.Connection 获取或设置 IDbCommand 的此实例使用的 IDbConnection。 (继承自 DbCommand
18、 IDbCommand.CreateParameter 创建 IDbDataParameter 对象的新实例。 (继承自 DbCommand。) IDbCommand.ExecuteReader 针对 Connection 执行 CommandText,并生成 IDataReader。 (继承自 DbCommand。) IDbCommand.ExecuteReader(CommandBehavior) 针对 Connection 执行 CommandText,并使用 CommandBehavior 值之一生成 IDataReader。 (继承自 DbComma
19、nd。) IDbCommand.Parameters 获取 IDataParameterCollection。 (继承自 DbCommand。) IDbCommand.Transaction 获取或设置将在其中执行此 DbCommand 对象的 DbTransaction。 (继承自 DbCommand。) 页首 备注 当创建 SqlCommand 的实例时,读/写属性将被设置为它们的初始值。 有关这些值的列表,请参见 SqlCommand 构造函数。 SqlCommand 特别提供了以下对 SQL Server 数据库执行命令的方法: Item 说明
20、 BeginExecuteNonQuery 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,一般情况下执行 INSERT、DELETE、UPDATE 和 SET 语句等命令。 每调用一次 BeginExecuteNonQuery,都必须调用一次通常在单独的线程上完成操作的 EndExecuteNonQuery。 BeginExecuteReader 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行,并从服务器中检索一个或多个结果集。 每调用一次 BeginExecuteReader,都必须调用一次
21、通常在单独的线程上完成操作的 EndExecuteReader。 BeginExecuteXmlReader 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。 每调用一次 BeginExecuteXmlReader,都必须调用一次 EndExecuteXmlReader,它通常在单独的线程上完成操作,并且返回一个 XmlReader 对象。 ExecuteReader 执行返回行的命令。 为了提高性能,ExecuteReader 使用 Transact-SQL sp_executesql 系统存储过程调用命令。 因此,如果 Execut
22、eReader 用于执行命令(例如 Transact-SQL SET 语句),则它可能不会产生预期的效果。 ExecuteNonQuery 执行 Transact-SQL INSERT、DELETE、UPDATE 及 SET 语句等命令。 ExecuteScalar 从数据库中检索单个值(例如一个聚合值)。 ExecuteXmlReader 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。 您可以重置 CommandText 属性并重复使用 SqlCommand 对象。 但是,在执行新的命令或先前命令之前,必须关闭 S
23、qlDataReader。 如果执行 SqlCommand 的方法生成 SqlException,那么当严重级别小于等于 19 时,SqlConnection 将仍保持打开状态。 当严重级别大于等于 20 时,服务器通常会关闭 SqlConnection。 但是,用户可以重新打开连接并继续操作。 注意 .NET Framework 的 SQL Server 数据提供程序不支持无名参数(也称序号参数)。 Topic Location 演练:在 TreeView 控件中显示分层数据 在 Visual Studio 中构建 ASP .NET Web 应用程序 演练:在 Tr
24、eeView 控件中显示分层数据 在 Visual Studio 中生成 ASP .NET Web 应用程序 示例 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。 该示例读取所有数据,并将其写到控制台。 最后,示例在退出 Using 代码块时先后关闭 SqlDataReader 和 SqlConnection。 C# VB 复制 private static void ReadOrderData(string connectionString) { string queryString
25、 "SELECT OrderID, CustomerID FROM dbo.Orders;"; using (SqlConnection connection = new SqlConnection( connectionString)) { SqlCommand command = new SqlCommand( queryString, connection); connection.Open(); SqlDataReader reade
26、r = command.ExecuteReader(); try { while (reader.Read()) { Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); } } finally { // Always call Close whe
27、n done reading. reader.Close(); } } } 版本信息 .NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 平台 Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Win
28、dows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。 线程安全 此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。 请参见 参考 System.Data.SqlClient 命名空间 其他资源 在 ADO.NET 中检索和修改数据 SQL Server 和 ADO.NET






