Respostas:
ExecuteScalar
normalmente é usado quando sua consulta retorna um único valor. Se retornar mais, o resultado será a primeira coluna da primeira linha. Um exemplo pode ser SELECT @@IDENTITY AS 'Identity'
.ExecuteReader
é usado para qualquer conjunto de resultados com várias linhas / colunas (por exemplo, SELECT col1, col2 from sometable
).ExecuteNonQuery
é normalmente usado para instruções SQL sem resultados (por exemplo, UPDATE, INSERT, etc.).ExecuteNonQuery
pode retornar o número de linhas afetadas.
ExecuteNonQuery ():
ExecuteReader ():
ExecuteScalar ():
URL de referência:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
Cada um é um tipo de execução diferente.
ExecuteScalar será o tipo de consulta que retornará um único valor.
Um exemplo seria retornar um id gerado após a inserção.
INSERT INTO my_profile (Address) VALUES ('123 Fake St.');
SELECT CAST(scope_identity() AS int)
ExecuteReader fornece um leitor de dados que permitirá que você leia todas as colunas dos resultados, uma linha por vez.
Um exemplo seria puxar informações de perfil para um ou mais usuários.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery é qualquer SQL que não está retornando valores, mas na verdade está executando alguma forma de trabalho, como inserir, excluir ou modificar algo.
Um exemplo seria atualizar o perfil de um usuário no banco de dados.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
Dos documentos (nota: MSDN é um recurso útil quando você quer saber o que as coisas fazem!):
Use o método ExecuteScalar para recuperar um único valor (por exemplo, um valor agregado) de um banco de dados. Isso requer menos código do que usar o método ExecuteReader e, em seguida, executar as operações necessárias para gerar o valor único usando os dados retornados por um SqlDataReader.
Envia o CommandText para a conexão e cria um SqlDataReader.
... e de SqlDataReader ...
Fornece uma maneira de ler um fluxo somente de encaminhamento de linhas de um banco de dados SQL Server. Essa classe não pode ser herdada.
Você pode usar o ExecuteNonQuery para executar operações de catálogo (por exemplo, consultar a estrutura de um banco de dados ou criar objetos de banco de dados, como tabelas) ou para alterar os dados em um banco de dados sem usar um DataSet executando instruções UPDATE, INSERT ou DELETE.
Para adicionar ao que outras pessoas postaram:
ExecuteScalar conceitualmente retorna a coluna mais à esquerda da primeira linha do conjunto de resultados da consulta; você poderia ExecutarScalar uma equipe SELECT * FROM, mas obteria apenas a primeira célula das linhas resultantes Normalmente usado para consultas que retornam um único valor. Não tenho 100% de certeza sobre o SQLServer, mas no Oracle, você não o usaria para executar uma FUNCTION (um código de banco de dados que retorna um único valor) e espera que ele forneça o valor de retorno da função, embora as funções retornem valores únicos. . No entanto, se você estiver executando a função como parte de uma consulta, por exemplo, SELECT SUBSTR ('abc', 1, 1) FROM DUAL, então ele forneceria o valor de retorno em virtude do fato de que o valor de retorno é armazenado no canto superior esquerdo célula do conjunto de linhas resultante
ExecuteNonQuery seria usado para executar procedimentos armazenados de banco de dados, funções e consultas que modificam dados (INSERT / UPDATE / DELETE) ou modificam a estrutura do banco de dados (CREATE TABLE ...). Normalmente, o valor de retorno da chamada é uma indicação de quantas linhas foram afetadas pela operação, mas verifique a documentação do banco de dados para garantir isso
ExecuteReader()
executa uma consulta SQL que retorna o objeto DBDataReader do provedor de dados que fornece acesso somente de encaminhamento e somente leitura para o resultado da consulta.
ExecuteScalar()
é semelhante ao ExecuteReader()
método projetado para consulta de singleton, como obter uma contagem de registros.
ExecuteNonQuery()
executar não consulta que funciona com criar, excluir, atualizar, inserir)
ExecuteNonQuery
Este método ExecuteNonQuery será usado apenas para inserir, atualizar e excluir, criar e instruções SET. O método ExecuteNonQuery retornará o número de linhas efetuadas com as operações INSERT, DELETE ou UPDATE.
ExecuteScalar
É muito rápido recuperar valores únicos do banco de dados. Execute Scalar retornará um valor de coluna única de linha única, ou seja, valor único, na execução de Consulta SQL ou procedimento armazenado usando o objeto de comando. ExecuteReader
Execute Reader será usado para retornar o conjunto de linhas, na execução da Consulta SQL ou procedimento armazenado usando o objeto de comando. Este é apenas para a recuperação direta de registros e é usado para ler os valores da tabela do primeiro ao último.
O método ExecuteNonQuery retornará o número de linhas efetuadas com as operações INSERT, DELETE ou UPDATE. Este método ExecuteNonQuery será usado apenas para inserir, atualizar e excluir, criar e instruções SET. (Consulte Mais informação)
ExecuteScalar retornará um valor de coluna única linha única, ou seja, valor único, na execução de Consulta SQL ou procedimento armazenado usando o objeto de comando. É muito rápido recuperar valores únicos do banco de dados. (Consulte Mais informação)
ExecuteReader será usado para retornar o conjunto de linhas, na execução da Consulta SQL ou procedimento armazenado usando o objeto de comando. Este é apenas para a recuperação direta de registros e é usado para ler os valores da tabela do primeiro ao último. (Consulte Mais informação)
ExecuteNonQuery: é normalmente usado quando não há nada retornado das instruções Sql, como operações de inserção, atualização e exclusão.
cmd.ExcecuteNonQuery();
ExecuteScalar:
Ele será usado quando a consulta Sql retornar um valor único.
Int b = cmd.ExcecuteScalar();
ExecuteReader
Será usado quando a consulta Sql ou o Procedimento Armazenado retornar várias linhas / colunas
SqlDataReader dr = cmd.ExecuteReader();
para obter mais informações, você pode clicar aqui http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery