C# - Acesso SQL Server com CRUD (ADO .NET)
Programar se aprende programando, certo ?
E nada melhor para aprender do que ter um protótipo funcional com o código fonte a partir do qual podemos estudar.
Este singelo projeto feito na linguagem C# realiza o acesso e as operações de inclusão, edição e exclusão em uma base de dados SQL Server.
Então vamos ao que interessa...
O projeto poderá ser aberto nos seguintes IDEs:
Além disso você deverá instalar os seguintes recursos:
O banco de dados SQL Server
A aplicação acessa a tabela Livros de um banco de dados SQL Server definido como Catalogo
Na figura abaixo temos a estrutura da tabela :
O script para criar o banco de dados, as tabelas e as stored procedures no SQL Server é dado a seguir:
USE [Catalogo] GO /****** Object: Table [dbo].[Autores] Script Date: 03/28/2011 10:52:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Autores]( [autorid] [int] IDENTITY(1,1) NOT NULL, [nome] [nchar](10) NULL, CONSTRAINT [PK_Autores] PRIMARY KEY CLUSTERED ( [autorid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Livros] Script Date: 03/28/2011 10:52:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Livros]( [livroid] [int] IDENTITY(1,1) NOT NULL, [autorid] [int] NOT NULL, [titulo] [nvarchar](150) NULL, [preco] [money] NULL, CONSTRAINT [PK_Livros] PRIMARY KEY CLUSTERED ( [livroid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: StoredProcedure [dbo].[SelAutores] Script Date: 03/28/2011 10:52:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[SelAutores] AS SELECT * FROM Autores RETURN GO /****** Object: StoredProcedure [dbo].[SchLivros] Script Date: 03/28/2011 10:52:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[SchLivros] AS SELECT * FROM Livros RETURN GO /****** Object: StoredProcedure [dbo].[IncluirAutor] Script Date: 03/28/2011 10:52:08 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE [dbo].[IncluirAutor] @nome nvarchar(150) AS INSERT INTO Autores (nome) Values(@nome) GO |
Você pode executar o script acima no SQL Server Management Studio para criar o banco de dados e as tabelas.
A interface da aplicação
A seguir temos a interface da aplicação no formulário form1.cs que utiliza os seguintes controles:
O código da aplicação (partes principais)
No início do formulário temos a definição dos namespaces usados no projeto:
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Data.SqlClient;
Note que estamos referenciando o namespace para acessar as classes ADO .NET para o SQL Server.
A seguir logo após a declaração do formulário temos a definição das variáveis ADO .NET para conexão com o banco de dados SQL Server:
SqlConnection
sqlCon = new SqlConnection();
SqlDataAdapter daLivros = new SqlDataAdapter();
DataSet dsLivros = new DataSet();
A string de conexão usada no programa é a seguinte:
sqlCon.ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=Catalogo;Integrated Security=True";
Se você pretende usar outro banco de dados basta alterar os nomes dessas variáveis conforme o provedor pertinente.
1 - Código da rotina SalvaMudancas() - Esta rotina verifica qual a ação a ser realizada : inclusão ou edição dos dados. Para incluir informações é usado os métodos NewRow()/Add e para atualizar os dados BeginEdit()/EndEdit() e ao final o método Update();
private void SalvaMudancas() { try { SqlCommandBuilder cbLivros = new SqlCommandBuilder(daLivros); DataTable dtLivros = dsLivros.Tables["tblLivros"]; DataRow drLivros; if (isIncluirFlag) { drLivros = dtLivros.NewRow(); drLivros["titulo"] = txtTitulo.Text; drLivros["preco"] = Convert.ToDecimal(txtPreco.Text); dtLivros.Rows.Add(drLivros); } else if (isEditarFlag) { drLivros = dtLivros.Rows.Find(dgvLista.SelectedRows[0].Cells[0].Value); drLivros.BeginEdit(); drLivros["titulo"] = txtTitulo.Text; drLivros["preco"] = Convert.ToDecimal(txtPreco.Text); drLivros.EndEdit(); } // envia mensagem ao SQL Server para persistir dados daLivros.Update(dsLivros, "tblLivros"); formataGridView(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } AtualizaDataSet(); SetButtons(true); SetEnabled(false); } |
2 - Código do botão Deletar - O código utiliza o método Find e a seguir o método Delete; ao final para persistir as alterações usa o método Update();
private void btnDeletar_Click(object sender, EventArgs e) { if (MessageBox.Show("Tem certeza?", "Deletar", MessageBoxButtons.YesNo) == DialogResult.Yes) { try { DataTable dtLivros = dsLivros.Tables["tblLivros"]; DataRow drLivros; if (dgvLista.SelectedRows.Count > 0) { // deleta a linha selecionada drLivros = dtLivros.Rows.Find(dgvLista.SelectedRows[0].Cells[0].Value); drLivros.Delete(); SqlCommandBuilder cbLivros = new SqlCommandBuilder(daLivros); // envia mudanças ao SQL Server daLivros.Update(dsLivros, "tblLivros"); AtualizaDataSet(); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } } |
3 - Código do evento Click do DataGridView
private void dgvLista_CellClick(object sender, DataGridViewCellEventArgs e) { // é um cabeçalho ? if (e.RowIndex > -1) { // não txtTitulo.Text = dgvLista.Rows[e.RowIndex].Cells[2].Value.ToString(); txtPreco.Text = dgvLista.Rows[e.RowIndex].Cells[3].Value.ToString(); } } |
No evento Click do controle DataGridView estamos obtendo os valores para o titulo e preco do livro e exibindo nos controles de formulário.
Executando o projeto iremos obter:
Enfim uma aplicação simples mas que mostra como você pode realizar a manutenção dos dados acessando um banco de dados SQL Server.
Pegue o projeto completo esta no Super DVD .NET e no Super DVD C#.
Adquirindo o Super DVD .VB , o Super DVD C# ou o Super DVD .NET Você recebe também : 1- O projeto VB .NET completo do programa e 3 resumos (DataSet,DataTable e DataView) 2- Um Curso básico de ADO .NET para a linguagem C# em PDF com 7 capítulos : veja aqui o conteúdo. |
Eu sei é apenas C# , mas eu gosto...
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#