Diferenças entre ExecuteReader, ExecuteNonQuery, ExecuteScalar. Quando usar e qual usar?
Veja as diferenças entre ambos, suas aplicações e exemplos de como usa-los.
ExecuteScalar - Retorna apenas um valor após a execução de uma consulta.
Use quando quiser um valor apenas (uma linha e uma coluna).
por exemplo para pegar o total de registros de uma tabela.
Exemplo:
using (SqlConnection Conn = new SqlConnection(sConnectionString)){ string sSQL = "SELECT COUNT(*) FROM tblUsuarios"; SqlCommand myCommand = new SqlCommand(sSQL, Conn); Conn.Open(); int iTotal = (int)myCommand.ExecuteScalar(); Response.Write(iTotal); Conn.Close();} |
Use quando for preencher um DropDownList, CheckBoxList, RadioButtonList
ExecuteReader é somente leitura e pode ser usado para outros fins tambem, veja nos exemplos.
Exemplo 1: (Populando/Preenchendo um DropDownList com usuários)
using (SqlConnection Conn = new SqlConnection(sConnectionString)){ string sSQL = @"SELECT id, nome FROM tblUsuarios ORDER BY nome"; SqlCommand myCommand = new SqlCommand(sSQL, Conn); Conn.Open(); SqlDataReader dr = myCommand.ExecuteReader(); ddlUsuarios.DataSource = dr; ddlUsuarios.DataTextField = "nome"; ddlUsuarios.DataValueField = "id"; ddlUsuarios.DataBind(); Conn.Close();} |
using (SqlConnection Conn = new SqlConnection(sConnectionString)){ string sSQL = @"SELECT id, nome FROM tblUsuarios ORDER BY nome"; SqlCommand myCommand = new SqlCommand(sSQL, Conn); Conn.Open(); SqlDataReader dr = myCommand.ExecuteReader(); while (dr.Read()) { Response.Write( "id = " + dr["id"] + " - " + " nome = " + dr["nome"] + "<br />" ); } dr.Close(); Conn.Close();} |
Use para inserir, atualizar e apagar dados do banco de dados.
Exemplo:
using (SqlConnection Conn = new SqlConnection(sConnectionString)){ string sSQL = "DELETE FROM tblUsuarios WHERE id = @id"; SqlCommand myCommand = new SqlCommand(sSQL, Conn); myCommand.Parameters.AddWithValue("@id", 5); Conn.Open(); myCommand.ExecuteNonQuery(); Conn.Close();} |