SqlCommand.ExecuteNonQuery 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
对连接执行 Transact-SQL 语句并返回受影响的行数。
public:
override int ExecuteNonQuery();
public:
virtual int ExecuteNonQuery();
public override int ExecuteNonQuery ();
public int ExecuteNonQuery ();
override this.ExecuteNonQuery : unit -> int
abstract member ExecuteNonQuery : unit -> int
override this.ExecuteNonQuery : unit -> int
Public Overrides Function ExecuteNonQuery () As Integer
Public Function ExecuteNonQuery () As Integer
返回
受影响的行数。
实现
例外
将 Value 设置为 Stream 时,使用的是 SqlDbType 而不是 Binary 或 VarBinary。 有关流式处理的详细信息,请参阅 SqlClient 流支持。
- 或 -
设置为 SqlDbType 时ValueTextReader,使用了 Char、NChar、NVarChar、VarChar 或 Xml 以外的 。
- 或 -
对锁定的行执行命令时出现异常。 当使用 Microsoft .NET Framework 1.0 版时不生成此异常。
- 或 -
流式处理操作期间发生了超时。 有关流式处理的详细信息,请参阅 SqlClient 流支持。
流式处理操作期间在 Stream、XmlReader 或 TextReader 对象中出现了错误。 有关流式处理的详细信息,请参阅 SqlClient 流支持。
流式处理操作期间关闭或删除了 SqlConnection。 有关流式处理的详细信息,请参阅 SqlClient 流支持。
流式处理操作期间关闭了 Stream、XmlReader 或 TextReader 对象。 有关流式处理的详细信息,请参阅 SqlClient 流支持。
示例
以下示例创建 , SqlCommand 然后使用 执行它 ExecuteNonQuery。 向该示例传递一个字符串,该字符串是 Transact-SQL 语句 (,例如 UPDATE、INSERT 或 DELETE) ,以及用于连接到数据源的字符串。
private static void CreateCommand(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
Public Sub CreateCommand(ByVal queryString As String, _
ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
End Sub
注解
可以使用 ExecuteNonQuery 执行目录操作 (例如,查询数据库的结构或创建数据库对象(如表) ),或者通过执行 UPDATE、INSERT 或 DELETE 语句在不使用 DataSet 的情况下更改数据库中的数据。
ExecuteNonQuery虽然 不返回任何行,但映射到参数的任何输出参数或返回值都使用数据填充。
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。 对于其他所有类型的语句,返回值为 -1。
当要插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数,以及受触发器或触发器影响的行数。
当在连接上设置 SET NOCOUNT ON 时, (在执行命令之前或作为执行命令的一部分,或作为执行命令启动的触发器的一部分) 受单个语句影响的行停止参与此方法返回的受影响的行计数。
如果未检测到导致计数的语句,则返回值为 -1。 如果发生回滚,则返回值也为 -1。