ADO.NET Framework INE 5612 – DSOOII Prof. Frank Siqueira - Turma 04238A Equipe: Jucemar, Rodrigo, William Introdução ao ADO.net Hoje há novas necessidades e desafios nos modelos de programação para acesso a dados em relação ao antigo modelo “cliente/servidor”. Há um crescimento no número de aplicações Web que rodam no cliente, sendo assim não se pode manter uma conexão aberta durante muito tempo. As aplicações hoje são desenvolvidas em multicamadas e há grandes desafios de como passar esses dados entre essas camadas. Introdução ao ADO.net O modelo de programação atual pede que nós tenhamos um modelo desconectado. O ADO.net foi criado pensado justamente nessas novas necessidades e desafios do novo modelo de programação. Constitui-se, basicamente, em um conjunto de classes para trabalhar com dados. Inclui ferramentas para se conectar a um banco de dados, executar comandos e recuperar os resultados. Os resultados são processados diretamente, colocados em um objeto DataSet e exibidos para o usuário . ADO.NET é uma evolução do ADO (ActiveX Data Objects). Sistemas Operacionais compatíveis Windows Vista Windows CE Windows XP ADO.net Windows 98 Windows 2000 Windows Millennium Edition Windows NT 4 com SP6a Características É compatível com aplicações de cenários conectados; É compatível com aplicações de cenários desconectados; É um modelo de programação com suporte avançado para o XML; Permite trabalhar com múltiplas fontes de dados diferentes ao mesmo tempo e de uma mesma maneira; Características Totalmente integrado ao .NET Framework; Como é nativo, sua API pode ser utilizada com as diversas linguagens que fazer parte do .NET Framework: Visual Basic, C#, entre outras; É sucessor do ADO, porém mais flexível; Possui um conjunto de Classes, Interfaces, Estruturas e Enumerações que gerem o aceso a dados dentro do .NET Framework; SQL Server arquivos textos XML MySQL ADO.net Access FireBird Oracle Sybase Compatibilidade com fontes de dados. Permite a comunicação com qualquer banco de dados relacionais entre outras fontes como arquivos CVS e Excel e etc. Arquitetura do ADO.net Arquitetura do ADO.net - DataProvider São bibliotecas que possibilitam uma maneira comum de interagir com uma fonte específica de dados. Cada biblioteca possui um prefixo que indica qual provedor ela suporta. DataProvider - Principais provedores Nome do Provedor API prefixo Descrição ODBC Data Provider Odbc Fonte de dados com uma interface ODBC interface. Geralmente usada para banco de dados antigos OleDb Data Provider OleDb Fonte de dados que expõe uma interface OleDb interface, ou seja: Access ou Excel Oracle Data Provider Oracle Para banco de dados Oracle SQL Data Provider Sql Para interação com o Microsoft SQL Server Arquitetura do ADO.net - DataProvider Connection: Usado para se conectar a base de dados Command: Usado para criar comandos dentro da fonte de dados DataReader: Fornece um acesso conectado somente-leitura e somentepara-frente a uma fonte de dados. O DataReader efetua uma única passagem pelo conjunto de registros do banco da forma mais eficiente possível. São objetos que não podem ser diretamente instanciados. O DataReader é retornado pelo método ExecuteReader do objeto Command. Arquitetura do ADO.net - DataProvider DataAdapter: Componentes encarregados de chamar os comandos de leitura, atualização, inclusão e exclusão de informações em uma fonte de dados pode ser usado para preencher um DataReader ou um DataSet. O DataAdapter promove associação entre o provedor de dados .NET e o DataSet. É um mediador, que facilita a comunicação entre o banco de dados e o DataSet. O DataAdapter lê os dados do banco e os armazena dentro do DataSet através do método Fill. Ele também escreve as alterações efetuadas nos dados, a partir do DataSet, para que elas posteriormente sejam gravadas no banco através do método Update. Arquitetura do ADO.net - DataSet DataSet: Fornece um representação relacional em memória de dados, sendo um conjunto completo de dados que incluem tabelas que contém dados, restrições de dados e relacionamentos entre as tabelas. O acesso é desconectado. É o principal componente da arquitetura ADO.NET, armazenando dados do banco no lado do cliente. Funciona como uma coleção de uma ou mais tabelas, que forma os objetos DataTable. Cada DataTable corresponde a uma única tabela ou visão. Assim, um objeto do tipo DataSet simula a estrutura da base de dados à qual se efetuou a consulta. Arquitetura do ADO.net - DataSet Criada para manipular os dados independente da fonte; Pode receber fontes de dados de bancos de dados através do DataAdapter; Pode trabalhar diretamente com arquivos XML; Pode ainda trabalhar com fontes de dados diferentes dentro de um mesmo DataSet; Permite manipular os dados, efetuando leituras e alterações necessárias no modelo desconectado, sem a necessidade de manter a conexão aberta com o banco de dados. Arquitetura do ADO.net - DataSet DataRelationCollection: Permite a criação de relacionamentos entre as DataTables contidas dentro do DataSet. Com tudo isso tem-se um modelo desconectado em memória algo muito parecido com que você possui em um banco de dados. Alteração na base - Desconectado Abrir ligação Preencher o DataSet Fechar ligação Atualizar a fonte de dados Abrir Ligação Processar o DataSet Fechar a ligação Exemplos de Utilização – C# using System.Data.SqlClient; // Instancia um objeto DataSet DataSet objetoDataSet = new DataSet(); // Instancia um objeto conexão e passa dados para a conexão como parametros SqlConnection conex = new SqlConnection(“Servidor, DB, User, Senha”); // Abre a conexão conex.Open(); // Instância um objeto DataAdapter especializado em Fontes de dados SQL SqlDataAdapter adapter = new SqlDataAdapter(); Exemplos de Utilização – C# // Inicializa o atributo do objeto DataAdapter responsável pelas consultas ao BD passando como parametro a consulta e a conexão adapter.SelectCommand = new SqlCommand(“select * from Usuarios”, conex); //Cria a tabela Usuarios dentro do objeto DataSet e preeche ela com o resultado da consulta ao BD adapter.Fill(objetoDataSet,“Usuarios”); // Fecha a conexão com o servidor conex.Close(); Exemplos de Utilização – C# //Retorna a tabela Usuários do objetoDataSet e armazena em uma variavel DataTable tabela = objetoDataSet.Tables[“Usuarios"]; //Altera o campo cidade do primeiro usuário tabela.Rows[0][“cidade"] = “Florianopolis"; //Efetua a atualização da base de dados a partir do objetoDataAdapter adapter.Update(objetoDataSet); Histórico • ADO : ActiveX Data Objects (ADO) – mecanismo Component Object Model criado pela Microsoft para que programas pudessem trocar informações com as bases de dados. • Pacote Microsoft Data Access Components (MDAC), disponibilizado gratuitamente, tem suporte a ASP, Delphi, PowerBuilder e VBA • ADO : aplicação em ambientes Cliente/Servidor com acesso simultâneo de vários usuários. Era utilizado em páginas dinâmicas desenvolvidas em ASP, que rodavam VBScript e JavaScript no servidor. ADO x ADO.NET • ADO : utilizava um conjunto comum de classes para executar conexões a bancos de dados, recuperar registros e efetuar atualizações nesse banco, executar procedures, etc. • ADO : basicamente três objetos, que no ADO.NET foram expandidos e especializados para suportarem as funcionalidades dos seus fornecedores de acesso. No esquema ao lado, “Xxx” pode ser alterado para Odbc, Sql, dentre outros. • ADO.NET : possui dois conjuntos de classes que são utilizadas para cessar os dados, dependendo de como eles estão armazenados. • ADO.NET : classes Disponibilizadas em pacotes diferentes. Para acessar um SQL Server, utiliza classes do pacote System.Data.SqlClient. Para acessar dados em outras fonts (como Excel, MySQL, Access, incluindo SQL Server), são utilizadas as classes do pacote System.Data.OleDb namespace. ADO x ADO.NET • O ADO utiliza o objeto Recordset para navegar e manipular dados. O ADO.NET substituiu esse objeto por outros três : DataReader e DataAdapter (para connected recordsets), e DataSet (para disconnected recordsets). • O Recordset funciona como uma única tabela. Se for necessário que ela contenha dados de várias tabelas diferentes, será necessário executar o comando JOIN para que todos os registros sejam reunidos em uma única relação. ADO x ADO.NET Operação ADO ADO.NET Suporte a XML Limitado Completo Representação dos dados em memória Recordset Dataset Tabelas Suporta apenas uma tabela, demandando uso do operador JOIN Suporta múltiplas tabelas, com simulação da estrutura do banco Navegação Varredura sequencial das colunas com o método MoveNext Colunas representadas como coleções, permitindo acesso direto a dados e posições específicas Conexão ao banco de dados Objeto recordset permite operações offline, mas o ADO foi desenhado para operar com uma conexão sempre ativa à base de dados. Conexão dura apenas o tempo necessário para efetuar operações no Banco de Dados como Select ou Update. Informações são lidas para dentro do objeto dataset, onde serão trabalhadas sem que precise haver conexão ativa com a base de dados. Passagem de dados Comunicação em modo binário (Modelo COM - Composed Objected Model-marshaling) XML. Comunicação através de um data adapter, permite controlar como os dados são transmitidos Compartilhamento de dados entre aplicações Suporte limitado ao tipo de dados que podem ser transmitidos do recordset Transmissão de dados baseada em formato XML, sem restrições ao tipo de dados que trafegam Referências http://www.macoratti.net/08/11/c_adn_1.htm http://msdn.microsoft.com/pt-br/data/gg252014.aspx http://www.macoratti.net/adn_bpu1.htm http://www.dei.isep.ipp.pt/~jtavares/ADAV/downloads/guiao_ADO_dotN et.pdf http://www.macoratti.net/08/11/c_adn_1.htm http://msdn.microsoft.com/en-us/library/ms973217.aspx http://support.microsoft.com/kb/183606/en-us?fr=1 http://www.macoratti.net/d040901.htm http://pt.wikipedia.org/wiki/ActiveX_Data_Objects http://www.devguru.com/features/tutorials/adonet/AdoNet1.asp