Usuário com melhor resposta
ExecuteReader x ExecuteNonQuery

Pergunta
-
Pessoal,
Executo um executereader para me trazer o resultado de um SQL mas eu tb precisava retornar o numero de linhas retornadas.
Eu consigo isso com o executenonquery mas como usar os 2 num metodo ?Como posso fazer isso ?
Segue o metodo abaixo:public static List<DepoimentosProdutos> SelectByProductId(int pIdProduto)
{
//Initialize command
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand();
cmd = new SqlCommand("DepoimentosSelectByIdProduto", con);
cmd.CommandType = CommandType.StoredProcedure;
// Add parameters
cmd.Parameters.AddWithValue("@id_produto", pIdProduto);
List<DepoimentosProdutos> results = new List<DepoimentosProdutos>();
using (con)
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
results.Add(new DepoimentosProdutos(reader));
}
return results;
}- Movido AndreAlvesLimaModerator segunda-feira, 11 de julho de 2011 22:41 (De:.NET Development - Geral)
Respostas
-
Não...
Como a sua função já retorna a lista results, você poderá acessar a propriedade Count para saber quantos registros foram lidos, no seu caso seria tipo:
List<DepoimentosProdutos> lista = SelectByProductId(1); MessageBox.Show(lista.Count.ToString());
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Marcado como Resposta AGA Neto segunda-feira, 11 de julho de 2011 19:06
Todas as Respostas
-
Use isto que vai dar certo...
public static int NumLinhas()
{
int numLinhas = 0;
//Initialize command
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand();using (con)
{
con.Open();cmd.CommandType = CommandType.Text;
numLinhas = Convert.ToInt32(cmd.ExecuteScalar("SELECT COUNT(*) FROM MINHA_TABELA"));
}
return numLinhas;
}
Abs
Rodolfo Paoni- Sugerido como Resposta Rodolfo Paoni segunda-feira, 11 de julho de 2011 18:49
-
Gabriel,
Na verdade você não conseguira fazer isto...
Você deverá executar o comando 2 vezes, a primeira vez somente para saber o numero de registros retornados, e uma segunda vez para fazer a leitura dos dados coisa que não é muito recomendável porque estaria gerando uma carga "dobrada" no seu código.
Mas de acordo com o código que você postou, você pode pegar o Count da sua lista "results" depois que você fizer a leitura.
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono) -
-
Não...
Como a sua função já retorna a lista results, você poderá acessar a propriedade Count para saber quantos registros foram lidos, no seu caso seria tipo:
List<DepoimentosProdutos> lista = SelectByProductId(1); MessageBox.Show(lista.Count.ToString());
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)- Marcado como Resposta AGA Neto segunda-feira, 11 de julho de 2011 19:06
-