ADO.NET - Roteiro básico e Boas Práticas



Documentos relacionados
Acesso a Banco de Dados usando C# (MySql Provider)

INTRODUÇÃO AO MODELO ADO.NET (DESCONECTADO)

CAPÍTULO 8 Conexões de banco de dados para programadores ASP.NET

Acesso a Banco de Dados usando C#

Procedimentos para Reinstalação do Sisloc

ASP.NET Gerando relatórios com o ReportViewer

Microsoft Visual Studio 2010 C# Volume II

Procedimentos para Instalação do Sisloc

Procedimentos para Instalação do SISLOC

Manual Integra S_Line

Manual Comunica S_Line

Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira

1ª PARTE DIÁRIOS ELETRÔNICOS

Desenvolvendo Websites com PHP

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Aula 1: Noção Básica e Criação de Tabelas.

Aula 1 Acesso a Banco de Dados

Manual Captura S_Line

Veja abaixo um exemplo de como os dados são mostrados quando usamos o

Data Transformation Services (DTS) por Anderson Ferreira Souza

Aplicativo da Manifestação do Destinatário. Manual

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Agendamento para Importação de Notas Fiscais

Introdução ao Tableau Server 7.0

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Front-End Uso da Linguagem Turbo Delphi para Acesso ao Banco de Dados Mysql

Outlook XML Reader Versão Manual de Instalação e Demonstração UNE Tecnologia

using System; using System.Collections.Generic; using System.Text; namespace Estudo { public class PessoaJuridica : Pessoa { private string cnpj;

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Noções de. Microsoft SQL Server. Microsoft SQL Server

Google Drive: Acesse e organize seus arquivos

Webmail lendo os s. O que é. Como ler os s através do WEBMAIL

Manual de Instalação e Configuração do SQL Express

Olimpíada Brasileira de Robótica. Manual de Inscrição. Sistema OLIMPO Instruções

Manual de Atualização Versão

ROTEIRO DE INSTALAÇÃO

Google Drive Print. Guia do administrador

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

02 - Usando o SiteMaster - Informações importantes

Como funciona? SUMÁRIO

AULA 1 Iniciando o uso do TerraView

JDBC Java Database Connectivity

1. Escritório Virtual Atualização do sistema Instalação e ativação do sistema de Conexão...5

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Lição 1 - Criação de campos calculados em consultas

Microsoft Access XP Módulo Um

INSTALAÇÃO DO SISTEMA CONTROLGÁS

REP idx. Manual de integração com Ponto Secullum 4

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon

Como atualizar os preços da ABCFarma.

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente ( apoio@turing.unicamp.br) Sumário

CE-240 ListEx 1. Lista de Exercícios 1. Relatório

Google Drive. Passos. Configurando o Google Drive

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

CODE IGNITER INSTALAÇÃO & BANCO DE DADOS

8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR 8VDQGRSDUkPHWURV

Índice: CMS 3 O que é Content Management System? Clientes 4 O que é o Cliente? 4 Configurando o i-menu/i-view para trabalhar. com o CMS.

Manual do AP_Conta. Manual do AP_Conta. Aplicativo para digitação e envio de contas médicas no padrão TISS

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Manual de Atualização DDBroker

Orientação a Objetos

Passo 1: Abra seu navegador e digite Passo 2: Na tela que surgir, clique em Get Started.

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Android e Bancos de Dados

Motorola Phone Tools. Início Rápido

Este Procedimento Operacional Padrão explica a melhor forma de se utilizar os filtros no Sistema TOTVS RM. Índice

2 de maio de Remote Scan

VVS Sistemas (21)

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

FAQ Sistema Eletrônico de Informações SEI-MP

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SERVIÇOS IMPRESSÃO. Professor Carlos Muniz

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

AULA 06 CRIAÇÃO DE USUÁRIOS

Livro Caixa. Copyright ControleNaNet

Sistema de de Bilhetagem Eletrônica MANUAL MÓDULO PDV

O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa?

Guia do usuário do PrintMe Mobile 3.0

Unidade 7: Panes no Excel

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Configuração de assinatura de

Manipulação de Banco de Dados com Java 1. Objetivos

MANUAL DO ANIMAIL Terti Software

MANUAL DE CONFIGURAÇÃO DO BACKUP

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

SUMÁRIO Acesso ao sistema... 2

Acessando um Banco de Dados

"Manual de Acesso ao Moodle - Discente" 2014

Banco de Dados BrOffice Base

Transcrição:

ADO.NET - Roteiro básico e Boas Práticas Confuso com tantos conceitos novos, com tantas siglas e acrósticos? Qual provedor usar? Devo usar DataSet ou DataReader? Se essas e outras dúvidas te atormentam, você chegou ao artigo certo. Espero que após terminar a leitura pelo menos metade das suas dúvidas estejam resolvidas ou encaminhadas. Esse é objetivo deste artigo. Antes vou lançar os fundamentos da ADO.NET para quem esta chegando agora. Afinal o que é ADO.NET e o que ela tem a ver com o Visual Basic? ADO.NET é um conjunto de assemblies que fazem parte da.net Framework e que permitem a comunicação com os bancos de dados realizando operações de leitura e atualização. Para realizar esta tarefa a ADO.NET tem vários 'Clientes' de fonte de dados os quais se encontram no espaço de nomes - namespace - System.Data. Assim temos: System.Data.SqlClient - permite o acesso ao banco de dados SQL Server 7.0 ou superior; System.Data.OleDb - permite o acesso a qualquer outra fonte de dados exceto(não recomendado) para o SQL Server 7.0 ou superior; System.Data.Oracle - permite o acesso ao banco de dados Oracle. Quais são os componentes básicos da ADO.NET? Como já disse anteriormente a ADO.NET possui diversos clientes logo teremos um componente para cada cliente. Assim temos: Nota: Para simplificar listei somente os componentes do SqlClient e OleDb Note que temos um componente SqlConnection e OleDbConnection em ambos os clientes para a conexão, um componente SqlCommand e OleDbCommand para o objeto Command e assim por diante. Qual o componente mais importante do ADO.NET? Na verdade todos os componentes são importantes pois estão inter-relacionados e funcionam em harmonia para atingir um objetivo. Dentre eles o componente que deve ser usado em primeiro lugar é o objeto XXXConnection pois a primeira coisa que devemos fazer antes de qualquer outra atividade é efetuar a conexão com a fonte de dados. O que significa criar uma conexão com uma fonte de dados? Criar uma conexão com uma fonte de dados significa usar o componente apropriado e fornecer informações ao componente para que ele possa encontrar a base de dados e poder acessar informações a partir dela. Como exemplo, vamos supor que você deseja criar uma conexão com um banco de dados SQL Server que esta instalado na sua máquina local e acessar o banco de dados Northwind. Neste caso você deve informar o seguinte: Usar o provedor de dados SQL Server.NET Data Provider do namespace System.Data.SqlClient O nome do servidor onde esta a base de dados O nome da base de dados O nome do usuário e a senha Nota: O namespace System.Data.SqlClient deverá ser declarado via imports no início do código. 1/5

Como exemplo de conexão deste acesso temos o seguinte código: Dim conexao as String strconexao = "data source=localhost;" & _ "initial catalog=northwind" & _ "integrated security=sspi;" Dim conexao as SqlConnection = New SqlConnection(strconexao) O que são adaptadores e como funcionam? Os adaptadores(objeto DataAdapter) estão encarregados de chamar os comandos de leitura, atualização, inclusão e exclusão de informações em uma fonte de dados. Com base nesta informação chegamos a conclusão que cada Adaptar deverá ter: Uma conexão para saber de onde irá acessar os dados Um comando Select : para saber quais dados acessar Um comando Insert : para saber quais dados incluir Um comando Update : para saber quais dados por atualizar Um comando Delete : para saber quais dados pode excluir O código exemplo que cria um Adaptador para o SQL Server usando a conexão acima criado é o seguinte : Dim da As SqlDataAdapter = New SqlDataAdapter("Select * from Clientes, conexao) A linha de código acima cria uma instância do Adaptador e atribui ao SelectCommand uma sentença SQL que lê todos os registros da tabela Clientes. (O resultado obtido com o SelectCommand pode ser usado para preencher um DataReader ou um DataSet.) Os comandos possuem a função que pode ser chamada para que um comando seja executado; podemos ainda informar que dados desejamos receber. Assim, se desejamos executar um procedimento armazenado sem receber nenhum valor usamos: ExecuteNonQuery. Se desejamos receber um valor usamos: ExecuteScalar. Abaixo o código exemplo que retorna um valor para a variável valor: Dim valor as String = da InserCommand.ExecuteScalar Abaixo o código exemplo que não retorna valor algum: da DeleteCommand.ExecuteNonQuery O que são os objetos Commands e como funcionam? Podemos ter basicamente 4 comandos : Select, Update, Insert e Delete. Cada comando possui uma sentença SQL que dirá ao Adaptador(DataAdapter) como realizar a respectiva tarefa. Para realizar tarefas simples usando sentenças SQL podemos usar o objeto CommandBuilder que funciona como um construtor automático dos comandos SQL básicos. Exemplo: Dim comandobuilder As SqlComandBuilder = New SqlCommandBuilder(da) Com a linha de código acima criamos os comandos : Insert, Update e Delete para o Adaptador da. Vamos juntar os trechos de códigos já escritos para obter o código completo para preencher um DataSet com todos os 2/5

dados da tabela Clientes da base de dados Northwind do SQL Server 2000: Dim conexao as String strconexao = "data source=localhost;" & _ "initial catalog=northwind" & _ "integrated security=sspi;" Dim conexao as SqlConnection = New SqlConnection(strconexao) Dim da As SqlDataAdapter = New SqlDataAdapter("Select * from Clientes, conexao) Dim comandobuilder As SqlComandBuilder = New SqlCommandBuilder(da) Dim ds As DataSet da.fill(ds,"clientes") Qual Provedor de dados.net Framework eu devo usar? Todos queremos obter um melhor desempenho para nossas aplicações. Principalmente as aplicações com acesso a base de dados. Para alcançar o melhor desempenho para sua aplicação com acesso a dados você deve usar o provedor de dados.net mais adequado para a sua fonte de dados. Como existem diversas opções de provedores de dados disponíveis na.net Framework oriente-se pela tabela abaixo para encontrar qual provedor de dados usar para sua fonte de dados e assim obter um melhor desempenho: Provedor.NET SQL Server.NET Data Provider Detalhes Localizado no namespace System.Data.SqlClient Recomendado para aplicações em 3 camadas usando como banco de dados o SQL Server version 7.0 ou superior. Recomendado para aplicações em uma camada usando o Microsoft Data Engine (MSDE) ou o Microsoft SQL Server 7.0 ou superior. Para usar o Microsoft SQL Server versão 6.5 e anterior você deve usar o OLE DB Provider for SQL Server com o OLE DB.NET Data Provider. OLE DB.NET Data Provider Localizado no namespace System.Data.OleDb. Recomendado para aplicações em 3 camadas usando o Microsoft SQL Server 6.5 ou anterior, ou, qualquer provedor OLE DB que suporta a interface OLE DB listada em OLE DB Interfaces Used by the OLE DB.NET Data Provider no.net Framework SDK. Recomendado para aplicações em uma camada usando o banco de dados Microsoft Access. (A utilização do banco de dados Microsoft Access para aplicações em 3 camadas não é recomendado.) Para acesso usando ODBC - Open Database Connectivity - existe um provedor de dados ODBC.NET disponível para download aqui. (O provedor já esta incluído na versão 1.1 da.net Framework) Nota: O suporte para o provedor OLE DB para ODBC (MSDASQL) não esta mais disponível. ODBC.NET Data Provider Localizado no namespace Microsoft.Data.Odbc. (a partir da versão 1.1 do.net Framework). Para a versão anterior do.net Framework (1.0) o provedor pode ser baixado aqui: download Fornece acesso a fonte de dados que são conectados via driver ODBC.(Deve ser usado somente quando não houver outra alternativa de conexão com a fonte de dados.).net Data Provider for Oracle Localizado no namespace System.Data.OracleClient (a partir da versão 1.1 do.net Framework). Para a versão anterior do.net Framework (1.0) o provedor pode ser baixado aqui: download. Fornece acesso a base de dados Oracle(versão 8.1.7 e superior)..net Data Provider Personalizado ADO.NET fornece um conjunto mínimo de interface que lhe permite implementar seu próprio provedor de acesso a dados.net. Para maiores informações veja o link: Implementing a.net Data Provider. SQLXML Classes gerenciadas O Microsoft SQL Server 2000 (SQLXML 3.0) contém classes SQLXML gerenciadas que permitem a você acessar a funcionalidade XML do Microsoft SQL Server 2000 ou superior. Essas classes permitem executar modelos XML,, realizar consultas usando a linguagem XML Path Language (XPath) sobre dados no servidor, ou realizar atualizações usando o Updategrams ou Diffgrams. 3/5

SQLXML 3.0 esta disponível para download: download. Resumindo: Vai Acessar uma fonte de dados USE o seguinte namespace Use o seguinte Provedor SQL Server 7.0 ou superior (2000,2005) ou MSDE System.Data.SqlClient SQL Server.NET Data Provider Oracle System.Data.OracleClient NET Data Provider for Oracle MS Access ou SQL Server 6.5 System.Data.OleDb OLE DB.NET Data Provider ODBC (DBF, Dbase, Paradox,etc...) Microsoft.Data.Odbc ODBC.NET Data Provider (*) (*) Utilize ODBC somente em último caso. Como trabalhar com DataReaders, DataSets, DataAdapters, e DataViews? ADO.NET, até a versão 1.1, fornecia dois objetos para retornar e armazenar dados em memória: DataSet e DataReader. DataReader - Fornece um acesso conectado somente-leitura e somente-para-frente a uma fonte de dados. 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. - Quando você usa um DataSet frequentemente você também usa um DataAdapter (e possivelmente um CommandBuilder) para interagir com sua fonte de dados. - Quando você usa um DataSet você pode empregar um DataView para aplicar ordenamento e filtragem nos dados do DataSet. - O DataSet também pode ser herdado para criar um DataSet fortemente tipado com o objetivo de expor tabelas, linhas e colunas como propriedades de objetos fortemente tipados. Afinal DataSet ou DataReader? Para decidir se você deve usar um DataSet ou um DataReader em sua aplicação de acesso a dados, você deve considerar o nível de funcionalidade que vai precisar usar na sua aplicação. Você deve usar um DataSet em sua aplicação quando: você precisar trabalhar com mais de uma tabela de dados simultaneamente. Você precisar de navegação entre múltiplas tabelas de resultados. você precisar manipular dados de múltiplas fontes: banco de dados, arquivos XML, arquivos textos, planilhas eletrônicas, etc... você precisar trocar dados entre camadas ou usar um Web Service XML. você precisar reutilizar o mesmo conjunto de linhas para alcançar desempenho através de cache de dados (via ordenação, busca ou filtro de dados) você precisar efetuar uma grande quantidade de processamento por linha. você precisar manipular dados usando operações XML como XLST ou consultas XPath. Você deve usar um DataReader em sua aplicação quando: Você precisar trabalhar somente com uma tabela de dados por vez você não precisar usar cache de dados você precisar somente exibir os dados de uma tabela você precisar acessar de forma rápida e de uma vez os dados de uma forma somente-leitura e somente-para-frente você precisar processar uma quantidade de dados muito grande para caber na memória Nota: O DataAdapter usa o DataReader par preencher o DataSet. Desta forma, o desempenho ganho pela utilização do DataReader é que você salva na memória os dados que o DataSet irá consumir. Em resumo: utilize um DataReader sempre que você puder, deixando a utilização de um DataSet para os casos realmente necessários. Dicas para utilizar melhor o DataReader O DataReader deve ser fechado antes de acessar qualquer parâmetro de saida para um Command associado. Sempre feche o DataReader quando você terminou de ler os dados. Se a conexão que você esta usando é usada somente para retornar o DataReader feche a conexão imediatamente depois de fechar o DataReader. O DataReader não pode ser trocado entre camadas pois foi criado para acesso a dados conectado. Somente um DataReader pode ser aberto de cada vez. 4/5

Ao acessar os dados de uma coluna use os conectores tipados como GetString, GetInt32 ao invés de GetValue. Se você estiver terminando de ler dados de um DataAdapter mas ainda tem uma grande quantidade de dados não lidos pendentes, use o comando Cancel no Command antes de efetuar o Close no DataReader. Se você dar um close no DataReader isto provocará o retorno dos dados pendentes antes de fechar o cursor. Ao usar o Cancel no Command você estará descartando os dados pendentes que o DataReader ainda não leu quando ele foi fechado. Boas práticas para acesso a dados com ADO.NET Abra conexões o mais tarde possível e Feche as conexões o mais cedo possível; Em operações que envolvam alterações de dados (UPDATE, INSERT, DELETE) em mais de uma tabela simultaneamente sempre utilize Transações; De forma geral todas as tabelas devem possuir uma chave primária Ao montar instruções SQL dê preferência a utilização de parâmetros nas strings SQL e evite a concatenação de strings. Desta forma evita-se erros e ataques de injeção SQL. A utilização de parâmetros permite que o SGBD compile o código SQL apenas uma vez; Ao utilizar o operador LIKE em instruções SQL a string usada na cláusula é o símbolo % e não o *. O correto é : SELECT nome FROM tabela where nome like 'Mac%' Procure construir filtros e ordenações diretamente na instrução SQL, usando as cláusulas WHERE, ORDER e GROUP e não via código; Procure evitar o uso do coringa (*) em instruções SQL com SELECT procurando nomear os campos que deseja obter da base de dados e sempre usando uma condição para evitar que todos os registros sejam selecionados. Evite : SELECT * from Tabela. Até o próximo artigo VB.NET... José Carlos Macoratti 5/5