You can use scalar for a delete or update, but obviously you won't get anything back, and that slows your app down a little bit. You can even use the full blown one that expects a table result set. You just don't want to. Things are flexible, though.
Minikay is right - hope I spelled that right!
ExecuteNonQuery = "Delete From SomeTable"
ExecuteScalar = "Select @@Identity"
Fill = "Select * From SomeTable"