Fazer edições refletir na base

<< Click to Display Table of Contents >>

Navigation:  Desktop > DataGridView >

Fazer edições refletir na base

Previous pageReturn to chapter overviewNext page

Form + DataGridView + Botao1 (gravar) + Botao2 (excluir)

 

Neste exemplo use mySQL

 

Fonte

 

using System;

using System.Data;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using System.Data.SqlClient;

 

namespace WindowsFormsApplication5

{

    public partial class Form1 : Form

    {

        // monta conexão, comando e adapter

        MySqlConnection conn;

        MySqlCommand comm;

        MySqlDataAdapter dataadapter;

        MySqlCommandBuilder sqlCmdBuilder;

        DataTable dTable;

        BindingSource bSource;

 

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            // monta conexão, comando e adapter

            conn = new MySqlConnection("Server=localhost;Database=base_um;Uid=root;Pwd=123456;");

            comm = new MySqlCommand("SELECT * FROM tb_pessoas", conn);

            dataadapter = new MySqlDataAdapter(comm);

 

            // dataTable é quem vai receber os dados do adapter

            dTable = new DataTable();

 

            // abre a conexão

            conn.Open();

 

            // este carinha é quem monta os códigos SQL do MySQL para enviar para base

            sqlCmdBuilder = new MySqlCommandBuilder(dataadapter);

 

            // transfere os pensamentos da base para o DataTable

            dataadapter.Fill(dTable); 

 

            // Este cara é quem vai "monitorar" as alterações para futuramente informar o sqlCmdBuilder

            bSource = new BindingSource();

 

            // indica quem que o BindingSource vai monitorar (o DataTable)

            bSource.DataSource = dTable;

 

            // a grid vai mostrar o que tem no Binding

            dataGridView1.DataSource = bSource;

        }

 

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)

        {

            // fecha conexão

            conn.Close();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            try

            {

                // grava qualquer edição pendente para o DataTable;

                dataGridView1.EndEdit(); 

 

                // monta o comando de update/delete/insert

                sqlCmdBuilder.GetUpdateCommand();

 

                // manda alterações para base

                dataadapter.Update(dTable);

 

                // avisa do sucesso

                MessageBox.Show("Sucesso em atualizar");

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            if (dataGridView1.SelectedRows.Count == 0)

            {

                MessageBox.Show("Nada selecionado para exclusão");

                return;

            }

 

            DataGridViewRow row = dataGridView1.SelectedRows[0];

            dataGridView1.Rows.RemoveAt(row.Index);

        }

    }

}

 

Tela:

 

datagrid5