Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Linguagem Programação II Prof. Edson Batista de Sena © Denis R. de Carvalho – denisrcarvalho@hotmail.com © Denis R. de Carvalho – denisrcarvalho@hotmail.com ADO.Net Agenda ADO .NET Namespaces Provedores de dados DataSet Exemplo Prático © Denis R. de Carvalho – denisrcarvalho@hotmail.com Definição ADO .NET é a nova tecnologia para acesso a dados da plataforma .NET estando integrada ao .NET Framework e oferecendo diversas classes que permitem realizar praticamente todas as tarefas relacionadas com o acesso e manutenção de dados. ADO .NET oferece suporte a uma variedade de opções para desenvolvimento de soluções com acesso a dados que permitem a comunicação com qualquer fonte de dados, desde os já conhecidos gerenciadores de banco de dados relacionais (SGBD) como : SQL Server, MySQL, FireBird, Oracle, Sybase, Access, XML, arquivos textos, etc. © Denis R. de Carvalho – denisrcarvalho@hotmail.com Definição É uma coleção de classes, interfaces, estruturas e enumerações que permitem acessar diversas fontes de dados Não é um evolução do ADO Não um conjunto de componentes ActiveX É parte integrante do .NET e não um elemento externo Trabalha com dados conectados e desconectados © Denis R. de Carvalho – denisrcarvalho@hotmail.com Acesso orientado a conexão ( .Net Providers) É feita uma conexão a um BD, ocorre um interação por meio de query SQL, usando a conexão estabelecida. A aplicação permanece conectada mesmo que não esteja usando os seus serviços. Acesso desconectado (DataSet) A aplicação se conecta automaticamente ao BD quando necessita interagir com o Banco Desconecta automaticamente após a obtenção dos resultados Buffer local de dados – dados copiados para a memória Tipos de Acesso © Denis R. de Carvalho – denisrcarvalho@hotmail.com Provedores de Acesso a Dados System.Data A plataforma .NET criou essa classe com vários provedores de acesso de qualquer plataforma, com: SQL Server, Oracle, Access, etc. Esses provedores pertencem à classe System.Data © Denis R. de Carvalho – denisrcarvalho@hotmail.com Provedores de dados SQL SERVER Other DB Other DB Oracle SERVER SQL Server 7 ou superior System.Data.SqlClient Oracle 8.1.7 ou superior System.Data.OracleClient SQL Server e Oracle System.Data.Odbc SQL Server 6.5 ou inferior Oracle , MySQL e DB2 System.Data.OldDb © Denis R. de Carvalho – denisrcarvalho@hotmail.com DataSet Este modo é conhecido como modo desconectado. O objeto DataSet veio para substituir com vantagens o objeto recordset (ADO) e, guarda poucas similaridades com o objeto recordset. Enquanto o objeto recordset representa uma coleção de tabelas de dados O objeto DataSet representa uma cópia do banco de dados em memória. A classe DataSet é membro do namespace System.Data e representa o primeiro dos dois maiores componentes da arquitetura ADO.NET os outros membros seriam os provedores Data .NET. © Denis R. de Carvalho – denisrcarvalho@hotmail.com DataSet Podemos resumir os atributos do DataSet como segue: É baseado em XML É um conjunto de dados em cache que não esta conectado ao banco de dados É independente da fonte de dados Pode armazenar dados em múltiplas tabelas que podem ser relacionadas Armazena múltipla versões de dados para coluna e para cada linha em cada tabela O DataSet fornece as principais funcionalidades para criar aplicações para banco de dados desconectados , embora suporte também o modelo conectado através de leitores de dados (DataReader). © Denis R. de Carvalho – denisrcarvalho@hotmail.com Desenvolvendo uma aplicação Off Line usando DataSet Para este exemplo utilizaremos um projeto windows form aplication, que vocês já estão acostumados a utilizar. Agora que já temos um projeto criado, vamos incluir um banco de dados local para dar suporte à aplicação, para isso clique em Project e escolha a opção Add New Item. Escolha o modelo Service-based Database; Dê o nome de Cadastro.mdf; © Denis R. de Carvalho – denisrcarvalho@hotmail.com Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Exemplo Prático... O assistente vai abrir a janela abaixo. Selecione o item DataSet e clique em Next; © Denis R. de Carvalho – denisrcarvalho@hotmail.com Na próxima janela, clique no botão Finish; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Você verá na janela Solution Explorer o banco de dados Cadastro.mdf criado; Clique duas vezes sobre este arquivo para que a janela DataBase Explorer seja aberta exibindo a estrutura atual do banco de dados. Será criado um DataSet chamado CadastroDataSet e o banco de dados Cadastro.mdf; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Vamos criar as tabelas Alunos, Cursos e Usuarios. Clique com o botão direito sobre a pasta Tables e clique em Add New Table; Será aberto um editor para que possamos informar os nomes e tipos de dados dos campos da tabela. Após definir estes valores devemos salvar a tabela com o nome apropriado. Abaixo temos a estrutura de cada tabela que devemos criar: Tabela Alunos : Campos: alunoid, nome, idade, email, cursoid e sexo. Observe que alunoid é chave primária e possui a propriedade Identity Specification igual a Yes; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Tabela Cursos Campos - cursoid e cursonome; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Tabela Usuarios Campos : id, login, nome, email e senha; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com O diagrama mostrado na figura abaixo exibe o relacionamento entre as tabelas Alunos e Cursos e a tabela Usuarios usada para fazer o login; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Criando a tela de apresentação (Splash Screen) Vamos alterar o nome do formulário Form1.cs para frmSplash.cs; para fazer isso selecione o formulário na janela Solution Explorer, e na janela de propriedades altere a propriedade File Name para: frmSplash.cs Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Vamos alterar as propriedades do formulário formSplash.cs na janela de propriedades conforme abaixo: FormBorderStyle = None StartPosition = CenterScreen Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Defina os controles conforme o leiaute abaixo: Inclua os controles na seguinte ordem:- Panel; - No interior do Painel inclua um PicutreBox; - Atribua uma imagem ao controle; - Inclua o Progressbar na base do formulário; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Cadastro_Basico { public partial class FrmSplash : Form { private bool aumenta = true; public FrmSplash() { InitializeComponent(); } Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com private void timer1_Tick(object sender, EventArgs e) { if (progressBar1.Value < 100) { progressBar1.Value = progressBar1.Value + 2; } if (aumenta) this.Opacity += 0.02D; if (this.Opacity == 1) { aumenta = false; this.Close(); } } Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com private void FrmSplash_Load(object sender, EventArgs e) { timer1.Interval = 400; timer1.Tick += new EventHandler(this.timer1_Tick); timer1.Enabled = true; progressBar1.Value = 0; this.Opacity = 0; } } } Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com O código faz o seguinte:Define um intervalo para o controle Timer de 400 milissegundos, habilitamos o Timer, definimos o valor inicial do ProgressBar igual a zero e a propriedade Opacity igual a zero; No evento Tick do Timer estamos verificando se o controle ProgressBar possui um valor menor que 100 e acrescentamos o valor de 2 unidades; Com isso a barra de progresso irá indicar um progresso até atingir o valor 100; Ao mesmo tempo estamos incrementando a propriedade Opacity de forma causar um efeito visual de aparecimento progressivo do formulário na tela; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com No menu Project clique em Add Windows Form e altere o nome do formulário para frmLogin.cs clicando em Add; Abra a janela Data Sources e arraste o data source Usuarios para o formulário; Vamos excluir os objetos usuariosBindingNavigator , os TextBox para Id, login, email e senha conforme mostrado a seguir: Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Em seguida a partir da ToolBox inclua os controles : PictureBox, Button no formulário conforme o leiaute da figura a seguir: Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com No formulário acima incluímos uma imagem na PictureBox na sua propriedade Image. A propriedade SizeMode deve ser igual a StretchImage; E como vamos exibir este formulário após o encerramento da tela de apresentação ? Teremos que alterar o código do Program.cs de forma que o formulário de frmLogin() seja executado quando a aplicação iniciar. Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com 1- Iniciamos a aplicação chamando o formulário de login 2- No seu evento Load eu crio uma instância do formulário frmSplash() para exibir o formulário frmSplash() 3- Após executar o código no formulário frmSplash() libera-se o recurso usado e escondemos o formulário de apresentação, assim o formulário de login surge triunfante... Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com 1- Evento Load do formuláro frmLogin: private void frmLogin_Load(object sender, EventArgs e) { frmSplash f1 = new frmSplash(); //// Mostramos o formulario na forma modal. f1.ShowDialog(this); f1.Dispose(); } Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Autenticando o Usuário No botão OK temos que efetuar a validação do usuário conferindo seu nome e senha. Para verificar a senha e o nome do usuário temos que consultar o banco de dados usando o DataSet CadastroDataSet criado. Para fazer isso temos que criar uma nova consulta no banco de dados para saber se o nome e a senha do usuário existem no banco de dados. Clique duas vezes no em CadastroDataSet para exibir a janela contendo o DataSet: Clique com o botão direito sobre UsuariosTableAdapter e a seguir clique em Add Query... Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Marque a opção Use SQL Statements (ela já vem marcada) e clique em Next; Marque a opção SELECT which returns rows (também ja vem marcada) pois queremos retornar um resultado obtido e clique em Next; Defina a seguinte consulta SQL : SELECT id, login, senha FROM dbo.Usuarios WHERE ( login = @login AND senha= @senha) Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Clique em Next; Informe o nome para a consulta criada conforme a figura abaixo: Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Pronto já criamos a consulta SQL para autenticar o usuário no banco de dados. Vamos ver como podemos usar a consulta no formulário de login. Defina no formulário os seguintes namespaces: using System; using System.Windows.Forms; using Cadastro_Basico.CadastroDataSetTableAdapters; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com No evento Click do botão OK vamos incluir o código abaixo: private void btnOK_Click(object sender, EventArgs e) { int resultado = usuariosTableAdapter.FillByUsuarioLogin(cadastroDataSet.Usuarios, txtLogin.Text, txtSenha.Text); if (resultado == 1) { frmCadastro fc = new frmCadastro(); this.Hide(); fc.ShowDialog(); fc.Dispose(); } else { MessageBox.Show("Usuário/Senha inválido(s) !", "Erro Login", MessageBoxButtons.OK, MessageBoxIcon.Information); } } Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com A linha de código: int resultado = usuariosTableAdapter.FillByUsuarioLogin(cadastroDataSet.Usuarios, txtLogin.Text, txtSenha.Text); Usa a consulta FillByUsuarioLogin que criamos no TableAdapter usuariosTableAdapter passando o DataSet e os valores para login e senha informados pelo usuário; O resultado obtido será armazenada na variável resultado. A seguir verificamos qual foi o resultado: if (resultado == 1) { frmCadastro fc = new frmCadastro(); this.Hide(); fc.ShowDialog(); fc.Dispose(); } else { MessageBox.Show("Usuário/Senha inválido(s) !", "Erro Login", MessageBoxButtons.OK, MessageBoxIcon.Information); } Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Se o resultado for igual a 1 significa que foi encontrado uma linha na tabela cujo nome e senha coincidem com o informado pelo usuário no formulário: Neste caso criamos uma instância do formulário de cadastro frmCadastro, escondemos o formulário de login e exibimos o formulário principal da aplicação que é o formulário de cadastro; Se o resultado for diferente de 1 então exibimos uma mensagem ao usuário. Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Criando o formulário de Cadastro No menu Project clique em Add Windows Forms e informe o nome frmCadastro.cs. A seguir a partir da ToolBox inclua um controle TabControl no formulário e inclua duas TabPages : tabPage1 - Cadastar Alunos tabPage2 - Consultar Alunos Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Ative a tabPage1 e inclua nela um controle Panel. Agora a partir da janela Data Source defina o dataset Alunos como Details e altere o modo de exibição dos campos cursoid e sexo para Combobox; A seguir arraste o DataSet para o interior do Panel na tabPage1(Cadastrar Alunos); Inclua também um controle PictureBox e um controle Button; A seguir arraste o dataset Cursos a partir da janela Data Sources para a combobox relativa aos cursos no formulário; Na janela de propriedades selecione a propriedade Items da combobox para sexo e defina os valores : M e F; Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com De forma que o leiaute da tabPage1 do formulário frmCadastro fique conforme a figura abaixo: Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Ative a tabPage2 e na janela Data Sources altere o modo de exibição do dataset alunos para DataGridView e arraste-o para o interior da tabPage2(Consultar Alunos): A seguir inclua um controle Label, um controle TextBox e um controle Button definindo o leiaute conforme a figura a seguir: Exemplo Prático... © Denis R. de Carvalho – denisrcarvalho@hotmail.com Dessa forma definimos a interface do formulário frmCadastro onde poderemos cadastrar , alterar e modificar os dados dos alunos bem como imprimir um relatórios das informações Exemplo Prático...