ExecuteNonQuery is specifically designed for SQL commands that don't return row data - INSERT, UPDATE, DELETE, DDL statements. It returns only the count of affected rows. ExecuteReader returns rows, ExecuteScalar returns a single value, ExecuteDataSet returns a DataSet.