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! 😉

Anúncios

Publicado em 27/06/2013, em Banco de Dados, C#, Windows Forms e marcado como , , , , , , , , . Adicione o link aos favoritos. 2 Comentários.

  1. Muito bom Pablo! Parabéns! Me ajudou muito!

  2. Material bem didático. Parabéns !

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: