por Cesar Cassiano Schimanco

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();
}

ExecuteReader - Retorna um DataReader com os dados da consulta e executa apenas o comando SELECT.
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();
}

Exemplo 2:

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();
}

ExecuteNonQuery - Não retorna dados de consulta, mas retorna o número de linhas afetadas em UPDATE, INSERT e DELETE (para os demais retornará -1), é utilizado geralmente para fazer Inserts, Updates e Deletes
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();
}

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...