.NET Framework Class Library
SqlCommand..::.ExecuteNonQuery Method

Executes a Transact-SQL statement against the connection and returns the number of rows affected.

Namespace:  System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)
Syntax

Visual Basic (Declaration)
Public Overrides Function ExecuteNonQuery As Integer
Visual Basic (Usage)
Dim instance As SqlCommand
Dim returnValue As Integer

returnValue = instance.ExecuteNonQuery()
C#
public override int ExecuteNonQuery()
Visual C++
public:
virtual int ExecuteNonQuery() override
JScript
public override function ExecuteNonQuery() : int

Return Value

Type: System..::.Int32
The number of rows affected.

Implements

IDbCommand..::.ExecuteNonQuery()()()
Exceptions

ExceptionCondition
SqlException

An exception occurred while executing the command against a locked row. This exception is not generated when you are using Microsoft .NET Framework version 1.0.

Remarks

You can use the ExecuteNonQuery to perform catalog operations (for example, querying the structure of a database or creating database objects such as tables), or to change the data in a database without using a DataSet by executing UPDATE, INSERT, or DELETE statements.

Although the ExecuteNonQuery returns no rows, any output parameters or return values mapped to parameters are populated with data.

For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. When a trigger exists on a table being inserted or updated, the return value includes the number of rows affected by both the insert or update operation and the number of rows affected by the trigger or triggers. For all other types of statements, the return value is -1. If a rollback occurs, the return value is also -1.

Examples

The following example creates a SqlCommand and then executes it using ExecuteNonQuery. The example is passed a string that is a Transact-SQL statement (such as UPDATE, INSERT, or DELETE) and a string to use to connect to the data source.

Visual Basic
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
C#
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();
    }
}
Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0
See Also

Reference

Other Resources

Tags :


Community Content

jyeager
NOCOUNT affects the return value

Above, it says "For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. For all other types of statements, the return value is -1. If a rollback occurs, the return value is also -1."

There is another case that causes it to return -1: if NOCOUNT is set to ON. This usually happens because the query includes the line "SET NOCOUNT ON", but it can also be set in the "Connection Defaults" screen in the SQL Server management tool.

Tags :

fatcat1111
NOCOUNT
Thank jyeager, I was going crazy until I read your comment. I appreciate your adding that.
Tags :

Page view tracker