 <p>Each one is a different type execution.</p> <ul> <li><p><strong>ExecuteScalar</strong> is going to be the type of query which will be returning a single value. </p> <p><em>An example would be returning a generated id after inserting.</em></p> <p><code>INSERT INTO my_profile (Address) VALUES ('123 Fake St.'); SELECT CAST(scope_identity() AS int)</code></p></li> <li><p><strong>ExecuteReader</strong> gives you a data reader back which will allow you to read all of the columns of the results a row at a time. </p> <p><em>An example would be pulling profile information for one or more users.</em></p> <p><code>SELECT * FROM my_profile WHERE id = '123456'</code></p></li> <li><p><strong>ExecuteNonQuery</strong> is any SQL which isn't returning values, but is actually performing some form of work like inserting deleting or modifying something. </p> <p><em>An example would be updating a user's profile in the database.</em></p> <p><code>UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'</code></p></li> </ul>