none
preencher datagridview com SqlDataReader RRS feed

  • Pergunta

  • meu datagrid está iniciando vazio, como faço p/ preenche-lo?

    <strong>      private SqlConnection conexao = new SqlConnection("strConection");
          conexao.Open();
          //criando o select e o objeto de consulta
          string sql = "select * from clientes";
          SqlCommand cmd = new SqlCommand(sql, conexao);
          cmd.Connection = conexao;
          cmd.CommandText = sql;
          
          SqlDataReader reader = cmd.ExecuteReader();      
          dataGridView1.DataSource = reader;
          reader.Close();
          conexao.Close();</strong>
    
    
    grato

    quarta-feira, 6 de outubro de 2010 18:32

Respostas

  • Seu código deve ficar mais ou menos assim:

       // varre as linhas...
       while (reader.Read())
       {
        // monta o array de valores...
        object[] values = new object[reader.FieldCount];
    
        // adiciona as colunas no grid...
        if (grid.Rows.Count == 0)
         for (int i = 0; i < reader.FieldCount; i++)
          grid.Columns.Add(reader.GetName(i), reader.GetName(i));
    
        // varre as colunas para preencher os valores...
        for (int i = 0; i < reader.FieldCount; i++)
         values[i] = reader.GetValue(i);
    
        // adiciona no grid...
        grid.Rows.Add(values);
       }
    
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Marcado como Resposta rschwalbe quarta-feira, 6 de outubro de 2010 19:28
    quarta-feira, 6 de outubro de 2010 19:21

Todas as Respostas

  • Você tem que usar um DataAdapter para isto:

    private SqlConnection conexao = new SqlConnection("strConection");
    
      conexao.Open();
    
      //criando o select e o objeto de consulta
      string sql = "select * from clientes";
      SqlCommand cmd = new SqlCommand(sql, conexao);
      cmd.Connection = conexao;
      cmd.CommandText = sql;
      
      // cria o dataadapter...
      SqlDataAdapter adapter = new SqlDataAdapter();
      adapter.SelectCommand = cmd;
    
      // preenche o dataset...
      DataSet dataSet = new DataSet();
      adapter.Fill(dataSet);
    
      dataGridView1.DataSource = dataSet;
      dataGridView1.DataMember = dataSet.Tables[0].TableName;
      conexao.Close();
    
    
    
    
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quarta-feira, 6 de outubro de 2010 18:45
  • com dataAdapter ja fiz e funcionou, o exercicio seguinte que é com dataReader que eu não consegui, já olhei vários tutoriais e foruns e nenhum se encaixou, de qualquer forma valeu Rogerio
    quarta-feira, 6 de outubro de 2010 18:53
  • Para você usar o datareader, você terá que preencher o grid não mão.

    Então se você quiser utiliza-lo, você terá que manualmente, percorrer todas as linhas e colunas do resultado e adiciona-lo no seu grid.

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quarta-feira, 6 de outubro de 2010 19:17
  • Seu código deve ficar mais ou menos assim:

       // varre as linhas...
       while (reader.Read())
       {
        // monta o array de valores...
        object[] values = new object[reader.FieldCount];
    
        // adiciona as colunas no grid...
        if (grid.Rows.Count == 0)
         for (int i = 0; i < reader.FieldCount; i++)
          grid.Columns.Add(reader.GetName(i), reader.GetName(i));
    
        // varre as colunas para preencher os valores...
        for (int i = 0; i < reader.FieldCount; i++)
         values[i] = reader.GetValue(i);
    
        // adiciona no grid...
        grid.Rows.Add(values);
       }
    
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Marcado como Resposta rschwalbe quarta-feira, 6 de outubro de 2010 19:28
    quarta-feira, 6 de outubro de 2010 19:21
  • Quero agradecer,pois foi muito bom este código,deu certo na minha aplicação;
    domingo, 30 de novembro de 2014 00:55