In this article I will explain with examples, how to use MySqlCommand ExecuteNonQuery in C# and VB.Net while developing ASP.Net, Windows and Console applications.
 
 

Download and Install the MySQL Connector

You will need to download and install the MySQL Connector in order to connect to the MySQL database in ASP.Net.
Note: For details on how to download and install the MySQL Connector, please refer my article Download, install and reference MySQL Connector in ASP.Net.
 
 

The ExecuteNonQuery method

ExecuteNonQuery is basically used for operations where there is nothing returned from the SQL Query or Stored Procedure Preferred use will be for INSERT, UPDATE and DELETE Operations.
 
 

Namespaces

You will need to import the following namespaces.
C#
using System.Data;
using System.Data.MySqlClient;
using System.Configuration;
 
VB.Net
Imports System.Data
Imports System.Data.MySqlClient
Imports System.Configuration
 

INSERT

Initially, the connection string is fetched from the App.Config or Web.Config file and object of MySqlConnection class is created using it.
Note: For more details on how to read Connection String from App.Config file, please refer my article Read (Get) Connection String from App.Config file using C# and VB.Net.
         For more details on how to read connection string from Web.Config file, please refer my article Read (Get) Connection String from Web.Config file in ASP.Net using C# and VB.Net.
 
Then, an object of MySqlCommand class is created and the INSERT query is passed to it as parameter and the values of the name and country are added as parameter to MySqlCommand object.
Finally, the connection is opened and the ExecuteNonQuery function is executed.
C#
string name = "Mudassar Khan";
string country = "India";
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr))
{
    using (MySqlCommand cmd = new MySqlCommand("INSERT INTO Persons (Name, Country) VALUES (@Name, @Country)", con))
    {
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@Name", name);
        cmd.Parameters.AddWithValue("@Country", country);
        con.Open();
        int rowsAffected = cmd.ExecuteNonQuery();
        con.Close();
    }
}
 
VB.Net
Dim name As String = "Mudassar Khan"
Dim country As String = "India"
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As MySqlConnection = New MySqlConnection(constr)
    Using cmd As MySqlCommand = New MySqlCommand("INSERT INTO Persons (Name, Country) VALUES (@Name, @Country)", con)
        cmd.CommandType = CommandType.Text
        cmd.Parameters.AddWithValue("@Name", name)
        cmd.Parameters.AddWithValue("@Country", country)
        con.Open()
        Dim rowsAffected As Integer = cmd.ExecuteNonQuery()
        con.Close()
    End Using
End Using
 
Understanding MySqlCommand ExecuteNonQuery in C# and VB.Net
 

UPDATE

Initially, the connection string is fetched from the App.Config or Web.Config file and an object of MySqlConnection class is created using it.
Then, an object of MySqlCommand class is created and the UPDATE query is passed to it as parameter and the values of the name and country are added as parameter to MySqlCommand object.
Finally, the connection is opened and the ExecuteNonQuery function is executed.
C#
string name = "Mudassar Khan";
string country = "India";
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr))
{
    using (MySqlCommand cmd = new MySqlCommand("UPDATE Persons SET Country = @Country WHERE Name = @Name", con))
    {
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@Name", name);
        cmd.Parameters.AddWithValue("@Country", country);
        con.Open();
        int rowsAffected = cmd.ExecuteNonQuery();
        con.Close();
    }
}
 
VB.Net
Dim name As String = "Mudassar Khan"
Dim country As String = "India"
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As MySqlConnection = New MySqlConnection(constr)
    Using cmd As MySqlCommand = New MySqlCommand("UPDATE Persons SET Country = @Country WHERE Name = @Name", con)
        cmd.CommandType = CommandType.Text
        cmd.Parameters.AddWithValue("@Name", name)
        cmd.Parameters.AddWithValue("@Country", country)
        con.Open()
        Dim rowsAffected As Integer = cmd.ExecuteNonQuery()
        con.Close()
    End Using
End Using
 
The screenshot below displays the rows affected.
Understanding MySqlCommand ExecuteNonQuery in C# and VB.Net
 

DELETE

Initially, the connection string is fetched from the App.Config or Web.Config file and an object of MySqlConnection class is created using it.
Then, an object of MySqlCommand class is created and the DELETE query is passed to it as parameter and the values of the name and country are added as parameter to MySqlCommand object.
Finally, the connection is opened and the ExecuteNonQuery function is executed.
C#
string name = "Mudassar Khan";
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr))
{
    using (MySqlCommand cmd = new MySqlCommand("DELETE FROM Persons WHERE Name = @Name", con))
    {
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@Name", name);
        con.Open();
        int rowsAffected = cmd.ExecuteNonQuery();
        con.Close();
    }
}
 
VB.Net
Dim name As String = "Mudassar Khan"
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As MySqlConnection = New MySqlConnection(constr)
    Using cmd As MySqlCommand = New MySqlCommand("DELETE FROM Persons WHERE Name = @Name", con)
        cmd.CommandType = CommandType.Text
        cmd.Parameters.AddWithValue("@Name", name)
        con.Open()
        Dim rowsAffected As Integer = cmd.ExecuteNonQuery()
        con.Close()
    End Using
End Using
 
The screenshot below displays the rows affected.
Understanding MySqlCommand ExecuteNonQuery in C# and VB.Net
 
What happens when I use ExecuteNonQuery for SELECT statement?
ExecuteNonQuery will work flawlessly for SELECT SQL Query or Stored Procedure but that will simply execute the query and do nothing. Even if you use it you will not throw any error but the Rows Affected will be negative i.e. -1.
C#
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr))
{
    using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM Persons", con))
    {
        cmd.CommandType = CommandType.Text;
        con.Open();
        int rowsAffected = cmd.ExecuteNonQuery();
        con.Close();
    }
}
 
VB.Net
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As MySqlConnection = New MySqlConnection(constr)
    Using cmd As MySqlCommand = New MySqlCommand("SELECT * FROM Persons", con)
        cmd.CommandType = CommandType.Text
        con.Open()
        Dim rowsAffected As Integer = cmd.ExecuteNonQuery()
        con.Close()
    End Using
End Using
 
The screenshot below displays the rows affected returned -1.
Understanding MySqlCommand ExecuteNonQuery in C# and VB.Net
Thus concluding it, we must use ExecuteNonQuery for INSERT, UPDATE and DELETE operations only.