ExecuteScalarnormalmente é 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.).
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'
Parece que você pode usar ExecuteReader para fazer as tarefas executadas por ExecuteScalar e ExecuteNonQuery, então por que usar os outros dois? algum benefício de desempenho?
user20358
Um motivo para evitar o uso excessivo de ExecuteReader é que ele manterá esse leitor por perto até que você termine com ele. Com tudo isso, você deseja saber algumas informações específicas sobre como eles funcionam para usá-los com mais eficácia. O que descrevi aqui são algumas boas diretrizes.
Brendan Enrick de
9
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.
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.
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)
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)
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 serSELECT @@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.).fonte
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
fonte
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'
fonte
Dos documentos (nota: MSDN é um recurso útil quando você quer saber o que as coisas fazem!):
ExecuteScalar
ExecuteReader
... e de SqlDataReader ...
ExecuteNonQuery
fonte
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
fonte
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 aoExecuteReader()
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)fonte
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.
fonte
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)
fonte
ExecuteNonQuery: é normalmente usado quando não há nada retornado das instruções Sql, como operações de inserção, atualização e exclusão.
ExecuteScalar:
Ele será usado quando a consulta Sql retornar um valor único.
ExecuteReader
Será usado quando a consulta Sql ou o Procedimento Armazenado retornar várias linhas / colunas
para obter mais informações, você pode clicar aqui http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery
fonte