Buscar

6 e 7 - Banco de Dados com Windows Form - Sql Server(1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tópicos Especiais 
 
Banco de Dados 
utilizando Windows Forms .NET 
com C# e 
ADO.NET 
Aula 06 
Trabalhando com Banco de Dados 
No modelo ADO.Net podemos acessar o banco de dados de duas 
formas: 
Modo conectado 
Neste modo, fazemos a conexão com o banco de dados e essa conexão fica 
aberta até finalizarmos nossa aplicação, ou seja, a aplicação está diretamente 
conectada ao banco, qualquer alteração é feita diretamente na base. 
Esse modelo permite termos sempre a informação atualizada. 
Ideal para sistemas em que os dados estão sempre mudando. 
Exemplo: um controle de estoque; 
Um problema nesse modo pode ser a causa de um tráfego maior na rede. 
Modo desconectado 
No modo desconectado, fazemos a conexão com o banco e deixamos uma cópia 
da base na memória, sendo assim, as modificações são feitas sempre na 
memória, ao término da aplicação, podemos conectar na base e atualizar as 
informações. 
Esse modelo é utilizado quando o banco não é atualizado com muita freqüência. 
O maior problema nesse modelo é a possibilidade de inconsistência dos dados. 
Exemplo: duas pessoas acessam através do modo desconectado um mesmo banco, 
durante o dia realizam diversas alterações e ao final do dia atualizam o servidor com a 
base. Como irá ocorrer a atualização? 
Modo desconectado 
DataConnection 
DataAdapter DataSet 
Aplicativo cliente 
Banco de 
Dados 
Classe de conexão 
Ponte entre o banco e o DataSet 
Classe para gerenciamento 
da base no modo desconectado 
(em memória) 
Modo conectado 
DataConnection 
DataReader Aplicativo cliente 
Banco de 
Dados 
DataCommnad 
DataCommnad 
Somente leitura 
Comandos SQL 
Introdução – ADO.NET 
A Microsoft criou o ADO.NET e toda uma arquitetura baseada em 
XML. Com isso podemos afirmar que esta tecnologia trabalha com 
dados desconectados. 
Escalabilidade – pelo fato de o DataSet ser baseado em acesso a 
dados desconectados, por ter uma arquitetura baseada no XML, o 
tempo de manipulação dos dados no banco de dados torna-se 
mínimo. Portanto mesmo com um número simultâneo de acesso 
maior, a aplicação consegue garantir uma boa escalabilidade; 
Performance – no ADO.NET a transmissão de dados é feita em 
XML, com isso pode se comunicar com diversas plataformas e 
aplicativos; 
Segurança – um firewall não consegue bloquear um arquivo texto. 
Portanto como o ADO.NET é baseado em XML, as portas dos 
firewalls não são mais problemas. 
OleDb 
A Plataforma.Net criou esta classe com vários provedores para o 
acesso de qualquer plataforma, como: SQL Server, Oracle e 
Access. 
Esta classe permite os seguintes provedores: 
Modelo com ADO.NET e ASP.NET. 
Classes para acesso ao MySQL 
Seguindo a mesma idéia apresentada anteriormente, temos as classes: 
 
Métodos importantes 
a) ExecuteReader – utilizado para executar 
consultas (típico em comandos Select). 
b) ExecuteScalar - para consultas que retornam um 
único valor (como um comando Select que calcula 
uma soma). 
c) ExecuteNonQuery - para aqueles comandos que 
não retornam valor (como um comando Insert). 
Praticando 
Para demonstrar a utilização de banco de dados, iremos criar um projeto novo onde permita uma 
entrada de dados em um formulário e possamos armazenar os dados neste banco de dados. 
Crie uma solução chamada slnCadasto e um projeto Windows form de nome Alunos. 
Nesse projeto cria a seguinte tela: 
btnInserir btnConsultar btnAlterar btnExcluir 
btnExibir 
txtId 
txtNome 
txtCurso 
No formulário, crie o layout abaixo com os campos textos e 5 botões e seus respectivos nomes: 
 
 
 
 
Praticando 
Praticando 
Acrescente um projeto a solução de nome CadastroDao e nesse projeto crie uma classe de nome Connection.cs 
using System.Data.SqlClient; 
 
namespace CadastroDao{ 
 class Connection{ 
 // vamos nos conectar ao SQL Server Express e à base de dados 
 private static string connString = @"Data Source=LUIZREIS\SQLEXPRESS;Initial Catalog=aluno;User ID=sa;Password=unicsul"; 
 
 // representa a conexão com o banco 
 private static SqlConnection conn = null; 
 
 // método que permite obter a conexão 
 public static SqlConnection getConnection(){ 
 // vamos criar a conexão 
 conn = new SqlConnection(connString); 
 
 // a conexão foi feita com sucesso? 
 try{ 
 // abre a conexão e a devolve ao chamador do método 
 conn.Open(); 
 } 
 catch (SqlException sqle){ 
 conn = null; 
 // ops! o que aconteceu? 
 // uma boa idéia aqui é gravar a exceção em um arquivo de log 
 } 
 return conn; 
 } 
 
 public static void closeConnection(){ 
 if (conn != null){ 
 conn.Close(); 
 } 
 } 
 } 
} 
Praticando 
Agora precisamos referenciar o projeto DAO para o projeto de cadastro. Para isso, 
selecione com o botão direito do mouse em cima do referências e clique em Adicionar 
Referência. 
Praticando – SQL Server 
using System.Data; 
using System.Data.SqlClient; 
 
namespace CadastroDao 
{ 
 public class Connection 
 { 
 // vamos nos conectar ao SQL Server Express e à base de dados 
 private static string connString = @"Data Source=LUIZREIS\SQLEXPRESS;Initial Catalog=aluno;User ID=sa;Password=unicsul"; 
 
 
 // representa a conexão com o banco 
 private static SqlConnection conn = null; 
 
 // método que permite obter a conexão 
 public static SqlConnection getConnection() 
 { 
 // vamos criar a conexão 
 conn = new SqlConnection(connString); 
 
 // a conexão foi feita com sucesso? 
 try 
 { 
 // abre a conexão e a devolve ao chamador do método 
 conn.Open(); 
 } 
 catch (SqlException sqle) 
 { 
 conn = null; 
 // ops! o que aconteceu? 
 // uma boa idéia aqui é gravar a exceção em um arquivo de log 
 } 
 
 return conn; 
 } 
 
 public static void closeConnection() 
 { 
 if (conn != null) 
 { 
 conn.Close(); 
 } 
 } 
 } 
} 
Praticando 
Crie um projeto chamado CadastroBasic na solução slnCadastro. 
Crie uma classe Aluno.cs 
namespace CadastroBasic 
{ 
 public class Aluno 
 { 
 private int id; 
 private String nome; 
 private String curso; 
 
 public Aluno(int id, string nome, string curso) 
 { 
 this.id = id; 
 this.nome = nome; 
 this.curso = curso; 
 } 
 
 public int Id { get => id; set => id = value; } 
 public string Nome { get => nome; set => nome = value; } 
 public string Curso { get => curso; set => curso = value; } 
 
 } 
} 
Praticando 
Crie um projeto chamado CadastroBus na solução slnCadastro. 
Crie uma classe de Negocio para inserir as informações do Aluno, criar uma classe 
chamada AlunoNegocio.cs. 
Será necessário importar o projeto Basic e Dao para utilização. 
using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using CadastroBasic; 
using CadastroDao; 
 
namespace CadastroBus 
{ 
 public class AlunoNegocio 
 { 
 
 } 
} 
Classe AlunoNegocio 
Praticando 
A classe terá um método que irá acessar o banco, repassar asinformações da janela e inserir na tela. 
public bool insertAluno(Aluno aluno) 
 { 
 int ret; 
 SqlCommand command = new SqlCommand(null, Connection.getConnection()); 
 
 // Prepara o comando de inserção. 
 command.CommandText = "INSERT INTO aluno (Id, nome, curso) VALUES (@id, @nome, @curso)"; 
 
 //Cria as referências dos parâmetros 
 SqlParameter idAluno = new SqlParameter("@id", SqlDbType.Int, 0); 
 SqlParameter nomAluno = new SqlParameter("@nome", SqlDbType.Text, 80); 
 SqlParameter nomCurso = new SqlParameter("@curso", SqlDbType.Text, 150); 
 
 //Setar os valores para os parâmetros 
 idAluno.Value = aluno.Id; 
 nomAluno.Value = aluno.Nome; 
 nomCurso.Value = aluno.Curso; 
 
 //Adiciona os valores 
 command.Parameters.Add(idAluno); 
 command.Parameters.Add(nomAluno); 
 command.Parameters.Add(nomCurso); 
 
 // Verifica a instrução se está correta para então executar o comando SQL. 
 command.Prepare(); 
 ret = command.ExecuteNonQuery(); 
 
 Connection.closeConnection(); 
 
 if (ret > 0) 
 return true; 
 else 
 return false; 
 } 
Classe AlunoNegocio 
Praticando 
A classe terá um método que irá acessar o banco e alterar as informações dos aluno com base no id, passando o nome e curso para alteração 
public bool updateAluno(Aluno aluno) 
 { 
 int ret; 
 SqlCommand command = new SqlCommand(null, Connection.getConnection()); 
 
 // Prepara o comando de inserção. 
 command.CommandText = "UPDATE aluno SET nome=@nome, curso=@curso where Id = @id"; 
 
 //Cria as referências dos parâmetros 
 SqlParameter idAluno = new SqlParameter("@id", SqlDbType.Int, 0); 
 SqlParameter nomAluno = new SqlParameter("@nome", SqlDbType.Text, 80); 
 SqlParameter nomCurso = new SqlParameter("@curso", SqlDbType.Text, 150); 
 
 //Setar os valores para os parâmetros 
 idAluno.Value = aluno.Id; 
 nomAluno.Value = aluno.Nome; 
 nomCurso.Value = aluno.Curso; 
 
 //Adiciona os valores 
 command.Parameters.Add(idAluno); 
 command.Parameters.Add(nomAluno); 
 command.Parameters.Add(nomCurso); 
 
 // Verifica a instrução se está correta para então executar o comando SQL. 
 command.Prepare(); 
 ret = command.ExecuteNonQuery(); 
 
 Connection.closeConnection(); 
 
 if (ret > 0) 
 return true; 
 else 
 return false; 
 } 
Classe AlunoNegocio 
Praticando 
A classe terá um método que irá acessar o banco e excluir as informações dos aluno com base no id 
public bool deleteAluno(int id) 
 { 
 int ret; 
 SqlCommand command = new SqlCommand(null, Connection.getConnection()); 
 
 // Prepara o comando de exclusão. 
 command.CommandText = "DELETE FROM aluno where Id = @id"; 
 
 //Cria as referências dos parâmetros 
 SqlParameter idAluno = new SqlParameter("@id", SqlDbType.Int, 0); 
 
 //Setar os valores para os parâmetros 
 idAluno.Value = id; 
 
 //Adiciona os valores 
 command.Parameters.Add(idAluno); 
 
 // Verifica a instrução se está correta para então executar o comando SQL. 
 command.Prepare(); 
 ret = command.ExecuteNonQuery(); 
 
 Connection.closeConnection(); 
 
 if (ret > 0) 
 return true; 
 else 
 return false; 
 } 
Classe AlunoNegocio 
Praticando 
A classe terá um método que irá acessar o banco e retornar as informações dos 
aluno com base no id. 
public Aluno searchAluno(int id) 
 { 
 SqlCommand command = new SqlCommand(null, Connection.getConnection()); 
 
 // Prepara o comando de pesquisa com a cláusula por Id Aluno. 
 command.CommandText = "SELECT Id,nome,curso from aluno where Id = @id"; 
 
 //Cria as referências do parâmetro 
 SqlParameter idAluno = new SqlParameter("@id", SqlDbType.Int, 0); 
 
 //Setar o valor para o parâmetro 
 idAluno.Value = id; 
 
 //Adiciona o valore 
 command.Parameters.Add(idAluno); 
 
 // Verifica a instrução se está correta para então executar o comando SQL. 
 command.Prepare(); 
 SqlDataReader dr = command.ExecuteReader(); 
 
 Aluno aluno; 
 if (dr.HasRows) 
 { 
 dr.Read(); 
 aluno = new Aluno(Convert.ToInt32(dr["Id"]), dr["nome"].ToString(), dr["curso"].ToString()); 
 } 
 else 
 { 
 aluno = null; 
 } 
 dr.Close(); 
 command.Dispose(); 
 Connection.getConnection(); 
 
 return aluno; 
 } 
Praticando 
Agora iremos criar outro formulário com o função de exibir em um listBox todos os alunos cadastrados, e após 
selecionar cada item, serem exibidos na caixa de texto. 
Para isso, iremos adicionar um novo formulário no projeto. Selecione com o botão direito do mouse no projeto 
e selecione Add / Windows Form. 
Iremos deixar o layout deste formulário conforme abaixo. Perceba que estamos utilizando agora um objeto 
novo denominado listBox, e daremos para este listbox o nome de lbxDados. 
 
 
 
lbxDados 
btnFechar 
txtId 
txtNome 
txtCurso 
Praticando 
private void btnExibir_Click(object sender, EventArgs e) 
{ 
 frmAlunosCadastrados f2 = new frmAlunosCadastrados(); 
 f2.Sow(); 
} 
 Clique 2 vezes no botão Exibir do formulário principal e se abrirá o evento clique 
deste botão, onde iremos adicionar o código abaixo: 
Classe AlunoNegocio 
Praticando 
A classe aluno terá um método que irá acessar o banco e retornaras informações de todos alunos 
public List<Aluno> getAlunos() 
 { 
 List<Aluno> alunos = new List<Aluno>(); 
 
 SqlCommand command = new SqlCommand(null, Connection.getConnection()); 
 
 // Prepara o comando de pesquisa com a cláusula por Id Aluno. 
 command.CommandText = "SELECT Id,nome,curso from aluno"; 
 
 // Verifica a instrução se está correta para então executar o comando SQL. 
 command.Prepare(); 
 SqlDataReader dr = command.ExecuteReader(); 
 
 Aluno aluno; 
 while (dr.Read()) 
 { 
 aluno = new Aluno(Convert.ToInt32(dr["Id"]), dr["nome"].ToString(), dr["curso"].ToString()); 
 alunos.Add(aluno); 
 } 
 dr.Close(); 
 command.Dispose(); 
 
 Connection.getConnection() 
 
 return alunos; 
 } 
Praticando 
No formulário frmAlunosCadastrados, clique 2 vezes em qualquer parte do formulário e se abrirá o evento 
Form Load deste formulário, onde iremos adicionar o código abaixo: 
private void frmAlunosCadastrados_Load(object sender, EventArgs e) 
 { 
 AlunoNegocio alunosGravados = new AlunoNegocio(); 
 List<Aluno> alunos = alunosGravados.getAlunos(); 
 
 for(int i = 0; i < alunos.Count; i++) 
 { 
 lbxDados.Items.Add(alunos[i].Id.ToString()); 
 } 
 } 
Praticando 
No formulário frmAlunosCadastrados, clique 2 vezes no objeto ListBox e se abrirá o evento 
SelectedIndexChanged, onde iremosadicionar o código abaixo: 
private void lbxDados_SelectedIndexChanged(object sender, EventArgs e) 
 { 
 int id = Convert.ToInt32(lbxDados.SelectedItem); 
 
 Aluno aluno = new Aluno(0, "", ""); 
 AlunoNegocio alunosGravados = new AlunoNegocio(); 
 Aluno resultadoAluno = alunosGravados.searchAluno(id); 
 
 txtId.Text = resultadoAluno.Id.ToString(); 
 txtNome.Text = resultadoAluno.Nome; 
 txtCurso.Text = resultadoAluno.Curso; 
 } 
Praticando 
Para finalizar, no formulário frmAlunosCadastrados, clique 2 vezes no botão fechar e se abrirá 
o evento clique deste botão, onde iremos adicionar o código abaixo: 
private void btnFechar_Click(object sender, EventArgs e) 
 { 
 Close(); 
 } 
DEITEL, H. M. C# Como Programar. São Paulo: Pearson Education do Brasil, 2003 
DEITEL, H. M. Visual Basic. Net: Como Programar. São Paulo: Pearson Education 
do Brasil, 2004 
Portal do centro do desenvolvedor para .Net, .Net Framework Developer Center: 
http://msdn.microsoft.com/pt-br/vstudio/aa496123 
Leia sobre a visão geral conceitual do .Net Framwork: http://msdn.microsoft.com/pt-
br/library/zw4w595w.aspx 
Leia sobre os estudos de caso do .Net Framework: 
http://www.microsoft.com/net/CaseStudies/ 
Instruções passo a passo: criando um arquivo de banco de dados local no Visual 
Studio http://msdn.microsoft.com/pt-br/library/ms233763.aspx 
Referência 
www.cruzeirodosul.edu.br

Continue navegando