Arquivos do Blog

Inserindo itens do DataGridView para o Banco de Dados

E ai galera!

Em minhas participações e contribuições nos fóruns da MSDN uma dúvida muito comum é:  como enviar os dados inseridos em um DataGridView  para o Banco de Dados, tendo isto em mente criei este post com um exemplo bem simples.

No exemplo os dados são inseridos em um DataGridView e no Click de um botão percorro os itens e persisto na Base de Dados SqlCompact e em um segundo DataGridView exibo os dados persistidos segue a tela com os componentes visuais:

Tela do exemplo.

Segue abaixo o Código cs do formulário com todas as operações, o mesmo está todo comentado!

using System;
using System.Data.SqlServerCe;
using System.Windows.Forms;

namespace DataGridViewParaBD
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            CarregaGrid();
            //informo quantas colunas
            //o dgvClientes térá
            dgvClientes.ColumnCount = 3;

            //Informo os nomes das colunas do dgvClientes
            dgvClientes.Columns[0].Name = "Nome";
            dgvClientes.Columns[1].Name = "E-mail";
            dgvClientes.Columns[2].Name = "Telefone";
        }

        //Clique do botão adicionar
        //insiro os itens no dgvclientes
        private void btnAdicionar_Click(object sender, EventArgs e)
        {
            dgvClientes.Rows.Add(txtNome.Text, txtEmail.Text, txtTelefone.Text);
            //limpo os controles
            txtNome.Text = String.Empty;
            txtEmail.Text = String.Empty;
            txtTelefone.Text = String.Empty;
        }

        //Método para Inserir que
        private void Inserir()
        {
            //Instância da conexão onde passo a
            //ConnectionString
            var conn = new SqlCeConnection(@"Data Source=|DataDirectory|\Exemplo.sdf");
            //sql que será executado na tabela cliente
            var sql = "INSERT INTO Cliente (Nome, Email, Telefone) " +
                      "VALUES (@Nome, @Email, @Telefone)";
            //instância do comando onde passo
            //o sql e a conexão como parâmetro
            var cmd = new SqlCeCommand(sql, conn);
            //abro a conexão
            conn.Open();

            //percorro o DataGridView
            for (int i = 0; i < dgvClientes.Rows.Count - 1; i++)
            {
                //limpo os parâmetros
                cmd.Parameters.Clear();
                //crio os parâmetro do comando
                //e passo as linhas do dgvClientes para eles
                //onde a célula indica a coluna do dgv
                cmd.Parameters.AddWithValue("@Nome",
                    dgvClientes.Rows[i].Cells[0].Value);
                cmd.Parameters.AddWithValue("@Email",
                    dgvClientes.Rows[i].Cells[1].Value);
                cmd.Parameters.AddWithValue("@Telefone",
                    dgvClientes.Rows[i].Cells[2].Value);
                //executo o comando
                cmd.ExecuteNonQuery();
            }
            //Fecho conexão
            conn.Close();
        }

        //cçlique do botão Gravar
        private void btnGravarNoBD_Click(object sender, EventArgs e)
        {
            //Chamo o método
            Inserir();
            CarregaGrid();
            //limpo as linhas no DataGridView
            dgvClientes.Rows.Clear();
        }

        //Método para carregar o dataGridView1
        //com os dados persistidos na base
        private void CarregaGrid()
        {
            //limpo as linhas
            dataGridView1.Rows.Clear();
            //indico o número de colunas
            dataGridView1.ColumnCount = 4;
            //Instância da conexão onde passo a
            //ConnectionString você tem que passar a sua
            var conn = new SqlCeConnection(@"Data Source=|DataDirectory|\Exemplo.sdf");
            //sql que será executado na tabela cliente
            var sql = "SELECT * FROM Cliente";
            //instância do comando onde passo
            //o sql e a conexão como parâmetro
            var cmd = new SqlCeCommand(sql, conn);
            //abro a conexão
            conn.Open();
            //instâncio o leitor
            var leitor = cmd.ExecuteReader();
            //enquanto leitor está lendo
            while (leitor.Read())
            {
                //insiro os dados no dataGridView1
                dataGridView1.Rows.Add(leitor[0].ToString(),
                    leitor[1].ToString(),
                    leitor[2].ToString(),
                    leitor[3].ToString());
            }
            //fecho conexão
            conn.Close();
        }
    }
}

O download do exemplo pode ser feito aqui!!!

É isso ai pessoal é um exemplo bem simples e o mesmo deve melhorado/otimizado, porém pode proporcionar uma ideia de como implementar a rotina!

Até a próxima! 😉

Troca de dados entre DataGridView Windows Forms

Olá pessoal!

Hoje vou mostrar uma maneira fácil e rápida de trocar dados entre DataGridView, o exemplo consiste em pegar os dados exibidos no dgvClientes01 e transferi-los para o dgvClientes02 no exemplo foi criado uma Classe Cliente e criado uma lista do mesmo e setado como fonte de dados do dgvClientes01, apenas para simular uma base de dados e no clique do botão Transferir percorro o dgvClientes01 e passo seu conteúdo para o dgvClientes02.

Segue abaixo o exemplo todo comentado:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace TrocandoDadosEntreDataGridView
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //Classe Cliente e suas propriedades
        class Cliente
        {
            public int Codigo { get; set; }
            public string Nome { get; set; }
            public string Email { get; set; }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //list de Cliente para simular
            //uma base de dados
            var lista = new List<Cliente>()
                            {
                                new Cliente() {Codigo = 1, Nome = "Pablo",
                                    Email = "pablo@hotmail.com"},
                                new Cliente() {Codigo = 2, Nome = "Maria",
                                    Email = "maria@hotmail.com"},
                                new Cliente() {Codigo = 3, Nome = "João",
                                    Email = "joao@hotmail.com"}
                            };
            //Carrego o dgvClientes01 com o list criado
            dgvClientes01.DataSource = lista;
        }

        //Evento click do botão transferir
        private void btnTransferir_Click(object sender, EventArgs e)
        {
            //informo a quantidade de colunas que o dgvClientes02
            //irá possuir
            dgvClientes02.ColumnCount = 3;

            //Nomeio as colunas
            dgvClientes02.Columns[0].Name = "Codigo";
            dgvClientes02.Columns[1].Name = "Nome";
            dgvClientes02.Columns[2].Name = "Email";

            //percorro o dgvClientes01
            for (int i = 0; i < dgvClientes01.Rows.Count; i++)
            {
                //Adiciono as linhas no dgvClientes02
                dgvClientes02.Rows.Add(dgvClientes01.Rows[i].Cells[0].Value,
                    dgvClientes01.Rows[i].Cells[1].Value,
                    dgvClientes01.Rows[i].Cells[2].Value);
            }
        }
    }
}

O download do exemplo está disponível aqui!!!

Abraços e até a próxima!

Ler aquivo TXT e armazenar em um List C#

Olá!

Hoje vou mostrar uma maneira simples de ler um Arquivo *.txt utilizando a Classe System.IO.File e armazenar seu conteúdo em um List<Cliente> com a linguagem C#, fazendo uso do método String.Split para “quebrar” a string.

Para este exemplo crie um arquivo *.txt e salve em “C:”.

Exemplo do arquivo txt

Exemplo do arquivo txt

Em seguida siga os seguintes passos:

using System;
using System.Collections.Generic;
using System.IO;

namespace LendoTxtArmazenandoList
{
    class Program
    {
        //classe Cliente e suas propriedades
        class Cliente
        {
            public int Id { get; set; }
            public string Nome { get; set; }
            public string Email { get; set; }
        }

        static void Main(string[] args)
        {
            //Instância da lista que será preenchida
            List<Cliente> lista = new List<Cliente>();

            //Retorna todas as linhas do arquivo em um array
            //de string, onde cada linha será um índice do array
            string[] array = File.ReadAllLines(@"C:\exemplo.txt");

            //percorro o array e para cada linha
            for (int i = 0; i < array.Length; i++)
            {
                //crio um objeto do tipo Cliente
                Cliente c = new Cliente();

                //Uso o método Split e quebro cada linha
                //em um novo array auxiliar, ou seja, cada
                //conteúdo do arquivo txt separado por '|' será
                //um nova linha neste array auxiliar. Assim sei que
                //cada índice representa uma propriedade
                string[] auxiliar = array[i].Split('|');

                //Aqui recupero os itens, atribuindo
                //os mesmo as propriedade da classe
                //Cliente correspondentes, ou seja,
                //o índice zero será corresponde ao Id
                //o um ao nome e o dois ao e-mail
                c.Id = Convert.ToInt32(auxiliar[0]);
                c.Nome = auxiliar[1];
                c.Email = auxiliar[2];

                //Adiciono o objeto a lista
                lista.Add(c);
            }

            //Para verificar o resultado percorro a lista
            //e exibo os valores recuparados pelo List<Cliente>
            foreach (var item in lista)
            {
                Console.WriteLine(@"Id: {0}; Nome: {1}; E-mail: {2};", item.Id, item.Nome, item.Email);
                Console.WriteLine(@"----------------------------------------------------------");
            }

            Console.ReadKey();
        }
    }
}

É isso ai até a próxima!!!