ASP .NET MVC - CRUD Básico com ADO.NET e JQuery - I
Hoje vamos recordar como fazer um CRUD básico em uma aplicação ASP .NET MVC sem usar o Entity Framework. |
Neste artigo vou mostrar como acessar um banco de dados relacional usando ADO .NET em uma aplicação ASP .NET MVC.
É um artigo para iniciantes onde não vou usar o Entity Framework e onde vamos implementar as operações CRUD usando ADO .NET e Jquery.
Essa abordagem funciona bem com aplicações pequenas e com modelo de dados bem simples por isso vamos definir um modelo de dados com apenas uma tabela Clientes e fazer o CRUD.
Podemos usar qualquer banco de dados relacional, bastando para isso usar o respectivo provedor. Neste exemplo para ficar bem simples vou usar o SQL Server 2012.
Criei um banco de dados chamado ContatosDB e uma tabela Clientes com a seguinte estrutura:
USE
[ContatosDB] CREATE TABLE [dbo].[Clientes]( [ClienteId] [int] IDENTITY(1,1) NOT NULL, [Nome] [nvarchar](150) NOT NULL, [Endereco] [nvarchar](150) NULL, [Email] [nvarchar](150) NULL) GO |
A título de exemplo inclui alguns dados iniciais na tabela:
A string
de conexão do banco de dados de definida abaixo:
"Data Source=MACORATTI;Initial Catalog=ContatosDB;Integrated Security=True;"
Note que para o seu ambiente este valor deverá ser diferente.
Criando o projeto no VS 2017
Vamos criar um novo projeto do tipo ASP .NET Core Web Application (.NET Framework) usando o template MVC, sem autenticação, chamado MvcClientes:
Será criado um projeto contendo Views, Controllers e Models que iremos usar.
Definindo o modelo e a string de conexão
Na pasta Models do projeto vamos criar a classe Cliente com o código abaixo:
public class Cliente
{
public int ClienteId { get; set; }
public string Nome { get; set; }
public string Endereco { get; set; }
public string Email { get; set; }
}
|
Agora abra o arquivo web.config e defina a string de conexão :
....
<connectionStrings>
<add name="SqlConexao" connectionString="Data Source=MACORATTI;
Initial Catalog=ContatosDB;Integrated Security=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
|
Dessa forma ao executar pela primeira vez nossa aplicação iremos obter string de conexão SqlConexao deste arquivo.
Ajustando o controlador HomeController
Na pasta Controllers vamos ajustar o código do controlador HomeController que foi criado por padrão. Vamos substituir o código existe e vamo definir as seguintes funcionalidades:
1 -
Método Action para manipular a operação GET
Dentro deste método Action, todos os registros da tabela Clientes são retornados
para a coleção View como uma lista genérica.
2- Método Action para inserir um Cliente
Dentro desse método Action, o objeto Cliente recebido é inserido na tabela
Clientes e o objeto Cliente atualizado com
ClienteId gerado é retornado
para a View.
3- Método Actiion para atualizar um cliente
Dentro deste método Action, o objeto Cliente é recebido como parâmetro. Os
valores de nome, endereço e email são atualizados na tabela
Clientes usando o
valor ClienteId.
4- Método Action para excluir um cliente
Dentro deste método Action, o valor ClienteId é recebido como parâmetro. O
registro do cliente é excluído da tabela Clientes usando o valor ClienteId.
Neste controlador vamos usar os namespaces :
Para poder acessar os objetos ADO .NET e para poder definir o arquivo de configuração do projeto onde vamos especificar a string de conexão com o banco de dados.
O objetos ADO .NET usados são:
Para operação definimos consultas SQL parametrizadas:
Abaixo vemos o código do controlador HomeController:
using MvcClientes.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Mvc;
namespace MvcClientes.Controllers
{
public class HomeController : Controller
{
// GET: Clientes
public ActionResult Index()
{
List<Cliente> clientes = new List<Cliente>();
string constr = ConfigurationManager.ConnectionStrings["SqlConexao"].ConnectionString;
string query = "SELECT * FROM Clientes";
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
clientes.Add(new Cliente
{
ClienteId = Convert.ToInt32(sdr["ClienteId"]),
Nome = Convert.ToString(sdr["Nome"]),
Endereco = Convert.ToString(sdr["Endereco"]),
Email = Convert.ToString(sdr["Email"])
});
}
}
con.Close();
}
}
if (clientes.Count == 0)
{
clientes.Add(new Cliente());
}
return View(clientes);
}
//
[HttpPost]
public JsonResult InsertCliente(Cliente cliente)
{
string query = "INSERT INTO Clientes VALUES(@Nome, @Endereco, @Email)";
query += "SELECT SCOPE_IDENTITY()";
string constr = ConfigurationManager.ConnectionStrings["SqlConexao"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Parameters.AddWithValue("@Nome", cliente.Nome);
cmd.Parameters.AddWithValue("@Endereco", cliente.Endereco);
cmd.Parameters.AddWithValue("@Email", cliente.Email);
cmd.Connection = con;
con.Open();
cliente.ClienteId = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
}
}
return Json(cliente);
}
//
[HttpPost]
public ActionResult UpdateCliente(Cliente cliente)
{
string query = "UPDATE Clientes SET Nome=@Nome, Endereco=@Endereco, Email=@Email
WHERE ClienteId=@ClienteId";
string constr = ConfigurationManager.ConnectionStrings["SqlConexao"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Parameters.AddWithValue("@ClienteId", cliente.ClienteId);
cmd.Parameters.AddWithValue("@Nome", cliente.Nome);
cmd.Parameters.AddWithValue("@Endereco", cliente.Endereco);
cmd.Parameters.AddWithValue("@Email", cliente.Email);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
return new EmptyResult();
}
//
[HttpPost]
public ActionResult DeleteCliente(int clienteid)
{
string query = "DELETE FROM Clientes WHERE ClienteId=@ClienteId";
string constr = ConfigurationManager.ConnectionStrings["SqlConexao"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Parameters.AddWithValue("@ClienteId", clienteid);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
return new EmptyResult();
}
}
}
|
Na segunda parte do artigo iremos criar a View do projeto. Aguarde.
"E disse
Jesus: As raposas têm covis, e as aves do céu têm ninhos, mas o Filho do homem
não tem onde reclinar a cabeça."
Mateus 8:20
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Criando uma proteção de tela - Macoratti