Acesso a Banco de Dados usando C# Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem de Programação III 5º Período
Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos aqui apresentar o ADO.NET. Esta importante parte da tecnologia.net permite que as diversas aplicações desenvolvidas usando a plataforma tenha acesso ao recurso de persistência de dados. Ao final desta aula, o aluno poderá implementar pequenas aplicações que envolvem os conceitos abordados. Boa aula a todos. Linguagem de Programação III 5º Período
Plano de Aula Cenário ADO.NET: O que é? Arquitetura Providers Core Objects Modo Conectado e Desconectado MySql ADO.NET Provider Linguagem de Programação III 5º Período 3
Máquina rodando a aplicação. Acesso a BD usando C# Cenário Máquina que guarda os dados. dados dados Rede Linguagem de Programação III 5º Período 4
Máquina rodando a aplicação. Acesso a BD usando C# Cenário Máquina que guarda os dados. dados dados Rede Após o desenvolvedor criar e testar sua aplicação, ele cria um instalador e o executa nas máquinas que deverão rodar sua aplicação; O usuário que vai usar a aplicação recebe o treinamento e o manual do usuário, além da aplicação já apresentar uma ajuda online; O usuário começa a usar a aplicação e possíveis problemas podem ser encaminhados ao desenvolvedor para que o mesmo possa corrigir. A equipe técnica prepara uma máquina para ser o servidor de dados da aplicação; Nesta máquina será instalado o SGBD para o qual a aplicação foi desenvolvida; Esta máquina tem de ser bem preparada pois se ela parar por algum motivo, ninguém poderá usar a aplicação; Pois é nela que será guardado, tudo que for feito na aplicação. Linguagem de Programação III 5º Período 5
Máquina rodando a aplicação. Acesso a BD usando C# Cenário Máquina que guarda os dados. dados dados Rede Vamos imaginar que nossa aplicação foi escrita em C#. Eu só entendo programação, principalmente POO. Que nosso SGBD seja o MySql. Eu só entendo SQL. Como estas duas tecnologias podem conversar? Linguagem de Programação III 5º Período 6
Máquina rodando a aplicação. Acesso a BD usando C# Cenário Máquina que guarda os dados. dados dados Rede Eu compreendo um pouco de C# e um pouco de SQL. Através do ADO.NET Linguagem de Programação III 5º Período 7
ADO.NET - O que é? O ADO.NET é uma evolução do ADO (ActiveX Data Objects) que foi utilizado até o Visual Basic 6; O ADO.NET foi construído sem nenhum reaproveitamento da tecnologia ADO; O ADO.NET permite interagir com bancos de dados relacionais e outras fontes de dados; O ADO.NET é a tecnologia que as aplicações.net usam para se comunicar com bancos de dados, caso precisem adicionar, atualizar, apagar ou recuperar registros; O ADO.NET possui interfaces e classes concretas que provêm todas essas funcionalidades; Linguagem de Programação III 5º Período 8
ADO.NET - O que é? Um framewrok orientado a objetos que permite a sua aplicação interagir com um sistema de Banco de Dados; Aplicações Fontes de Dados Linguagem de Programação III 5º Período 9
Arquitetura A arquitetura do ADO.NET está dividida em dois grupos: Manager Providers (provedores gerenciados) Content Components (componentes de conteúdo) Managed Providers: se encarregam do acesso a dados, porém não armazenam os mesmos, fazendo ligação direta com a fonte de dados; Neste grupo temos classes de conexão, transação, execução de comandos (Command) e leitura de dados (DataReader); Content Components: responsável por armazenar e manipular os dados em memória, porém eles não sabem de sua origem e nem o que significam; neste grupo temos as classes DataSet, DataTable, DataRow, DataColumn, etc; Linguagem de Programação III 5º Período 10
Arquitetura Arquitetura ADO.NET, onde a parte referente ao DataSet representa os Content Components. Managed Providers Linguagem de Programação III 5º Período 11
Providers Os providers do ADO.NET são pacotes de classes que possibilitam a interação com uma fonte de dados específica, como por exemplo, com uma base SQL Server; Interfaces principais: IDbConnection, IDbCommand e IDbDataReader, IDbDataTransaction e IDbDataAdapter; A partir destas interfaces qualquer fabricante de banco de dados pode criar componentes (um pacote) que implementam as mesmas para permitir o acesso ao seu SGBD; Cada pacote possui um prefixo que indica qual a fonte de dados que este pacote suporta; Linguagem de Programação III 5º Período 12
Providers Core namespace é formado: System.Data +.NET Framework data providers; Data Provider SQL Server OLE DB ODBC Oracle Namespace System.Data.SqlClient System.Data.OleDb System.Data.Odbc System.Data.OracleClient Linguagem de Programação III 5º Período 13
ADO.NET Core Objects Classe Connection Command DataReader DataAdapter DataTable DataSet Descrição é responsável por estabelecer uma ligação com a fonte de dados específica. é utilizado para executar uma instrução SQL. faz leitura de dados forward-only e read-only de uma fonte de dados. Popula a DataSet e provê atualizações em uma fonte de dados. representa uma ou mais tabelas de dados em memória. trabalha com um conjunto de dados em cache não conectados ao banco de dados, ele não depende da fonte de dados e pode armazenar dados de múltiplas tabelas Linguagem de Programação III 5º Período 14
ADO.NET Core Objects Linguagem de Programação III 5º Período 15
Providers e Core Objects Core Objects SQL Server Provider OLE DB Provider Oracle Provider ODBC Provider Connection SqlConnection OleDbConnection OracleConnection OdbcConnection Command SqlCommand OleDbCommand OracleCommand OdbcCommand DataReader SqlDataReader OleDbDataReader OracleDataReader OdbcDataReader DataAdapter SqlDataAdapter OleDbDataAdapter OracleDataAdapter OdbcDataAdapter Linguagem de Programação III 5º Período 16
Modo Conectado e Desconectado Existem dois modelos de se trabalhar a ligação da aplicação com o banco de dados no ADO.NET: O modelo conectado e o modelo desconectado; No modelo conectado o banco de dados trabalha de forma online, ou seja, em cada operação CRUD (Create, Retrieve, Update e Delete) realizada será aberta uma conexão com o banco de dados, e esta conexão será fechada após o seu uso; No modelo desconectado os dados serão manipulados sem a necessidade de utilizar os serviços de rede a todo o momento. No modelo desconectado é comum o uso dos objetos SqlConnection, o DataSet e o SqlDataAdapter; Linguagem de Programação III 5º Período 17
Modo Conectado e Desconectado Modo Conectado Modo Desconectado Linguagem de Programação III 5º Período 18
Modo Conectado A P L I C A Ç Ã O ADO.NET Linguagem de Programação III 5º Período 19
Modo Desconectado ADO.NET A P L I C A Ç Ã O Linguagem de Programação III 5º Período 20
MySql ADO.NET Provider O ADO.NET provê uma arquitetura orientada a objetos para comunicação entre a aplicação.net e uma fonte de dados; A fonte de dados pode ser qualquer uma que API dê suporte. Mas comumente esta fonte é um banco de dados gerenciado por um SGBD; Veremos aqui como usar uma fonte MySql com o.net. Data Source Connection Object (ADO.Net) Data Adapter Dataset (Local) Application Linguagem de Programação III 5º Período 21
MySql ADO.NET Provider Precisamos do MySqlConnetor.NET para permitir que nossa aplicação.net tenha acesso a base de dados no padrão do MySql; Primeiro devemos fazer download no site: http://dev.mysql.com/downloads/connector/net/ Executar a instalação; Após a instalação criar uma referência do MySqlConnector na aplicação.net; Para isto, basta com clicar com o botão direito sobre a Aplicação.NET (References) e escolher a opção Add Reference; Linguagem de Programação III 5º Período 22
Adicionando o MySqlConnector.NET Adicionando a Referência Selecionando a DLL MySql.Data.dll ao Projeto Linguagem de Programação III 5º Período 23
A API do MySql ADO.NET Provider MySqlConnection cria uma conexão com um banco de dados MySQL; MySqlCommand permite a execução de qualquer comando sql junto ao banco de dados MySql; MySqlDataReader fornece um acesso rápido ao banco de dados MySql. Este acesso é forwardonly e read-only; MySqlDataAdapter serve como uma interface entre as classes de acesso a dados do MySQL com o Microsoft DataSet. MySqlParameter usado para armazenar parâmetros dinâmicos para um MySqlCommand; MySqlTransaction usado para representar uma transação com o MySQL. Linguagem de Programação III 5º Período 24
Usando o MySqlConnector.NET 1. Adicionar na aplicação o namespace: using MySql.Data.MySqlClient; 2. Toda ação do banco de dados deve estar dentro de um bloco try/catch; 3. Neste bloco de código a variável con foi definida no espaço do formulário; 4. Realizamos a abertura do canal de comunicação no bloco try e fechamos no finally; Linguagem de Programação III 5º Período 25
Dúvidas Página do Professor Mauro: http://www.dai.ifma.edu.br/~mlcsilva Linguagem de Programação III 5º Período
Próxima Aula Programando o acesso a Banco de Dados usando C#. Linguagem de Programação III 5º Período