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#