Hoje vamos criar uma aplicação usando a linguagem C# para realizar o cadastro de Produtos usando o SQL Server Local ou SQL Server Compact (SQL CE). |
Ele é um banco de dados enxuto e pequeno e fácil de distribuir que você pode usar para aplicações embarcadas, pequenas aplicações locais ou conectadas ocasionalmente.
O Microsoft SQL
Server Compact (SQL CE) é um banco de dados relacional compacto produzido
pela Microsoft para aplicativos que são executados em dispositivos móveis e
desktops. Antes da introdução da plataforma desktop, ele era conhecido como
SQL Server para Windows CE e SQL Server Mobile Edition. A última versão é o SQL Server Compact 4.0 suportado na plataforma NET Framework 4.0. Ele inclui tanto o suporte a 32-bit como a 64-bit, sendo direcionado para aplicações embutidas e aplicativos com um banco de dados integrado. Ele é gratuito para baixar e redistribuir. Não existe um ODBC para SQL CE mas você pode usar o SQL CE via OLE DB. |
Neste artigo vou mostrar como usar o SQL Server Local em uma aplicação onde iremos realizar as operações CRUD para um cadastro de Produtos.
Portanto neste artigo você vai aprender a:
Recursos Usados:
Criando um Cadastro de Produtos com SQL Server Local
Abra o Visual Studio 2012 Express for Windows desktop e clique em New Project;
Escolha a linguagem Visual C# -> Windows e a o template Windows Forms Application informando o nome BancodeDadosLocal;
No formulário padrão form1.cs inclua a partir da ToolBox os seguintes controles:
Disponha os controles no formulário conforme o leiaute abaixo:
Agora vamos criar um banco de dados chamado Vendas.sdf e uma tabela Produtos no SQL Server Local.
No menu PROJECT clique em Add New Item;
A seguir selecione a guia Data e clique no template Local DataBase, informe o nome Vendas.sdf e clique no botão Add;
Na próxima janela podemos escolher entre criar um DataSet ou um Entity Data Model. Podemos apenas clicar no botão Cancel para apenas criar o banco de dados. Clique no botão Cancel, pois vamos apenas criar o banco de dados neste momento.
Agora na janela DataBase Explorer exibindo a conexão e os objetos do banco de dados Vendas.sdf.
Para criar a tabela Produtos clique com o botão direito sobre o banco de dados e a seguir em Create Table:
Na janela New Table vamos definir a tabela Produtos com os campos : Id , Nome, Estoque, Custo e Descricao conforme mostra a figura abaixo:
Para concluir esta etapa vamos incluir alguns dados na tabela Produtos. Clique com o botão direito sobre a tabela e a seguir em Show Table Data.
A seguir digite alguns dados a partir da coluna Nome conforme mostrado abaixo. (A coluna Id será incrementada automaticamente)
Realizando as operações CRUD no SQL Server Local com ADO .NET
Vamos definir a string de conexão criada para o banco de dados Vendas.sdf no arquivo de configuração App.Config.
Para obter a string de conexão clique no banco de dados Vendas.sdf na janela DataBase Explorer e na janela de Properties obtenha o seu valor na propriedade Connection String. A seguir abra o arquivo App.Config e crie uma seção <connectionstrings> contendo os valores conforme mostrado abaixo:
<?xml
version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <connectionStrings> <add name="ProdutosSDF" connectionString="Data Source=c:\users\mac\documents\visual studio 2012\Projects\BancodeDadosLocal\BancodeDadosLocal\Vendas.sdf"/> </connectionStrings> </configuration> |
Para podermos acessar o valor da string de conexão no arquivo app.config devemos incluir uma referência no projeto ao namespace System.Configuration.
No menu PROJECT clique em Add Reference e a seguir selecione o namespace System.Configuration conforme abaixo:
Neste momento você deve verificar se seu projeto possui a referência para a biblioteca System.Data.SqlServerCe.dll.
Se não possuir no menu PROJECT clique em Add Reference e a seguir selecione o local :
C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop e a seguir selecione System.Data.SqlServerCe.dll.
Pronto agora já podemos partir para realizar as operações CRUD.
Separando as responsabilidades - Criando um classe para acesso aos dados
Neste momento poderíamos colocar o código ADO .NET diretamente nos eventos do botões de comando do formulário form1.cs que tudo funcionaria corretamente. Mas essa não é uma boa prática e por isso eu vou criar uma classe e colocar nela o código que acessa os dados e realiza a persistência dos mesmos realizando as operações de incluir, alterar e excluir dados da tabela Produtos.
No menu PROJECT clique em Add New Item e selecione o template Class e informe o nome DAL.cs. A seguir coloque o código abaixo nesta classe:
using System;
using System.Configuration;
using System.Data.SqlServerCe;
using System.Data;
namespace BancodeDadosLocal
{
public class DAL
{
private static SqlCeConnection objSqlCeConnection = null;
private static DAL objSqlServerCeDAL = null;
private static string connString = null;
public DAL()
{
string connString = ConfigurationManager.ConnectionStrings["ProdutosSDF"].ToString().Trim();
objSqlCeConnection = new SqlCeConnection(connString);
}
public static DAL GetInstance(string connString)
{
if (objSqlServerCeDAL == null)
{
objSqlServerCeDAL = new DAL();
}
return objSqlServerCeDAL;
}
public void Open()
{
try
{
if (objSqlCeConnection.State == ConnectionState.Closed)
{
objSqlCeConnection.Open();
}
}
catch (Exception e)
{
throw e;
}
}
public void Dispose()
{
try
{
if (objSqlCeConnection.State != ConnectionState.Closed)
{
objSqlCeConnection.Close();
objSqlCeConnection.Dispose();
}
}
catch (Exception e)
{
throw e;
}
}
public int Insert(Produto _produto, string sql) { DAL objSqlCeServerDAL = DAL.GetInstance(connString); objSqlCeServerDAL.Open(); SqlCeCommand dCmd = new SqlCeCommand(sql,objSqlCeConnection); dCmd.CommandType = CommandType.Text; try { dCmd.Parameters.AddWithValue("@nome", _produto.nome); dCmd.Parameters.AddWithValue("@estq", _produto.estoque); dCmd.Parameters.AddWithValue("@cust", _produto.custo); dCmd.Parameters.AddWithValue("@desc", _produto.descricao); return dCmd.ExecuteNonQuery(); } catch { throw; } finally { dCmd.Dispose(); objSqlCeServerDAL.Dispose(); } } public int Update(Produto _produto, string sql ) { DAL objSqlCeServerDAL = DAL.GetInstance(connString); objSqlCeServerDAL.Open(); SqlCeCommand dCmd = new SqlCeCommand(sql, objSqlCeConnection); dCmd.CommandType = CommandType.Text; try { dCmd.Parameters.AddWithValue("@nome", _produto.nome); dCmd.Parameters.AddWithValue("@estq", _produto.estoque); dCmd.Parameters.AddWithValue("@cust", _produto.custo); dCmd.Parameters.AddWithValue("@desc", _produto.descricao); return dCmd.ExecuteNonQuery(); } catch { throw; } finally { dCmd.Dispose(); objSqlCeServerDAL.Dispose(); } } public DataTable Load(string sql) { DAL objSqlCeServerDAL = DAL.GetInstance(connString); objSqlCeServerDAL.Open(); SqlCeDataAdapter dAd = new SqlCeDataAdapter(sql, objSqlCeConnection); dAd.SelectCommand.CommandType = CommandType.Text; DataSet dSet = new DataSet(); try { dAd.Fill(dSet, "Produtos"); return dSet.Tables["Produtos"]; } catch { throw; } finally { dSet.Dispose(); dAd.Dispose(); objSqlCeServerDAL.Dispose(); } } public int Delete(int codigo,string sql) { DAL objSqlCeServerDAL = DAL.GetInstance(connString); objSqlCeServerDAL.Open(); SqlCeCommand dCmd = new SqlCeCommand(sql, objSqlCeConnection); dCmd.CommandType = CommandType.Text; try { dCmd.Parameters.AddWithValue("@codigo", codigo); return dCmd.ExecuteNonQuery(); } catch { throw; } finally { dCmd.Dispose(); objSqlCeServerDAL.Dispose(); } } } } |
Nesta classe criamos os seguintes métodos:
Na segunda parte deste artigo vamos implementar as operações para incluir, alterar, excluir e exibir dados da tabela Produtos.
João 9:40 Alguns fariseus que ali estavam com ele, ouvindo isso, perguntaram-lhe: Porventura somos nós também cegos?
João 9:41 Respondeu-lhes Jesus: Se fosseis cegos, não teríeis pecado; mas como agora dizeis: Nós vemos, permanece o vosso pecado.
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#