Apostila CSharp
64 pág.

Apostila CSharp


DisciplinaMétodos e Técnicas de Programação22 materiais162 seguidores
Pré-visualização14 páginas
estruturas do ADO.NET em XML.
O ADO.NET faz parte do .NET Framework, e e´ composto por um conjunto de classes,
interfaces, tipos e enumerac¸o\u2dces.
12.2 Os namespaces relacionados ao ADO.NET
Para trabalharmos com o ADO.NET em uma aplicac¸a\u2dco .NET, e´ necessa´rio utilizarmos al-
gumas das namespaces dispon´\u131veis nas bibliotecas do .NET Framework. Alguns dos principais
namespace sa\u2dco:
\u2022 System.Data: Conte´m a infra-estrutura ba´sica para trabalharmos com qualquer base de
dados relacional. Neste namespace encontramos as classes responsa´veis por armazenar as
estruturas dos bancos relacionais em memo´ria;
\u2022 System.Data.Common: Conte´m as interfaces comuns a todos os bancos de dados. Este
namespace e´ utilizado internamente pelo framework e por fabricantes de bancos de dados,
para a construc¸a\u2dco de bibliotecas de acesso;
\u2022 System.Data.SqlClient : Biblioteca de acesso ao SQL Server. Permite a conexa\u2dco, a extrac¸a\u2dco
e a execuc¸a\u2dco de comandos em servidores SQL Server de versa\u2dco 7 ou superior;
\u2022 System.Data.OleDb: Biblioteca de acesso para bancos de dados que suportam OleDb. Per-
mite conexa\u2dco, a extrac¸a\u2dco e a execuc¸a\u2dco de comandos nestes bancos de dados. E´ necessa´rio
informar o provedor OleDb a ser utilizado. Permite acesso a bancos mais simples, como o
Access;
Apostila C# 56
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
57
\u2022 System.Data.SqlTypes: Conte´m a definic¸a\u2dco dos tipos nativos do SQL Server;
\u2022 System.XML: Conte´m as classes para manipulac¸a\u2dco de documentos XML. Como o ADO.NET
possui uma camada de persiste\u2c6ncia em XML, este namespace e´ amplamente utilizado.
12.3 O modelo de execuc¸a\u2dco do ADO.NET
O ADO.NET prove\u2c6 uma estrutura de acesso a dados que permite o acesso a mu´ltiplas bases
de dados simultaneamente. E´ poss´\u131vel armazenar duas tabelas de diferentes bancos de dados
(SQL Server e Access por exemplo) em uma mesma estrutura de dados (DataSet).
A estrutura responsa´vel pelo armazenamento dos dados e´ o DataSet, que conte´m um conjunto
de objetos (DataTables) que representam resultados tabulares extra´\u131dos da base de dados.
Figura 1: Esquema acesso ao banco de dados
Para fazer a extrac¸a\u2dco dos dados, o ADO.NET utiliza os chamados \u201d.NET Data Providers\u201d.
Os Data Providers sa\u2dco bibliotecas de classes especializadas para o acesso a um tipo de banco
de dados relacional. Por serem uma implementac¸a\u2dco espec´\u131fica para o banco de dados, estas
possuem um acesso bem mais eficiente do que outras bibliotecas como a OleDb.
Segue uma lista de data providers dispon´\u131veis para os bancos citados:
\u2022 Firebird .NET Data Provider;
\u2022 MySQL .NET Data Provider;
\u2022 Npgsql .NET Data Provider;
Apesar de serem uma implementac¸a\u2dco espec´\u131fica para um tipo de banco de dados, as classes
dos Data Providers possuem uma estrutura comum.
Apostila C# 57
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
58
12.4 O modelo de execuc¸a\u2dco em um ambiente conectado
O ADO.NET e´ capaz de trabalhar com dois modelos, o modelo conectado e o modelo des-
conectado. No modelo conectado e´ necessa´rio manter a conexa\u2dco aberta enquanto sa\u2dco realizadas
as operac¸o\u2dces de leitura e gravac¸a\u2dco.
Para trabalharmos em um modelo conectado, devemos observar alguns objetos dispon´\u131veis
nas classes dos .NET Data Providers, que devem ser utilizados na seguinte ordem:
\u2022 XxxConnection: E´ o objeto utilizado para estabelecer a conexa\u2dco com o banco. E´ necessa´rio
informar os para\u2c6metros de conexa\u2dco e abrir a conexa\u2dco com o banco. Exemplos dessa classe
sa\u2dco SqlConnection e OleDbConnection;
\u2022 XxxCommand : E´ um objeto utilizado para enviar comandos a base de dados. E´ necessa´rio
montar a cla´usula Sql desejada e informar ao objeto de comando. Ao executar o comando,
este pode devolver um objeto do tipo XxxDataReader ;
\u2022 XxxDataReader : E´ um objeto utilizado para ler dados de um comando executado. O
me´todo Read le\u2c6 os dados de registro em registro. Apo´s a leitura completa dos dados e´
necessa´rio fechar o DataReader e a conexa\u2dco;
12.5 O modelo de execuc¸a\u2dco em um ambiente desconectado
O modelo de execuc¸a\u2dco em um ambiente desconectado utiliza outros objetos. Neste modelo
utilizamos o objeto DataSet para armazenar e manipular os dados em memo´ria e o objeto
XxxDataAdapter para extrair e enviar as alterac¸o\u2dces ao banco de dados. O objeto de conexa\u2dco
tambe´m e´ utilizado neste modelo.
Os passos para extrac¸a\u2dco e manipulac¸a\u2dco dos dados em um ambiente desconectado sa\u2dco:
1. E´ aberta uma conexa\u2dco utilizando um objeto XxxConnection (OleDbConnection ou Sql-
Connection por exemplo);
2. E´ criado um objeto do tipo XxxDataAdapter que e´ responsa´vel por fazer a extrac¸a\u2dco de
dados do banco de dados para a memo´ria e o posterior envio dos dados da memo´ria para
o banco de dados;
3. Utilizando o me´todo Fill, extra´\u131mos os dados da base de dados e armazenamos em um
DataSet. Neste momento fechamos a conexa\u2dco com o banco pois os dados ja´ esta\u2dco na
memo´ria da aplicac¸a\u2dco para serem manipulados;
Apostila C# 58
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
59
4. Como os dados esta\u2dco em memo´ria, e´ poss´\u131vel inserir, remover ou alterar registros do
DataSet ;
5. Ao finalizar as alterac¸o\u2dces, restabelecemos a conexa\u2dco com o banco de dados para enviar as
alterac¸o\u2dces;
6. Utilizando o me´todo Update do DataAdapter, enviamos as alterac¸o\u2dces para o banco de
dados. O DataAdapter verifica os tipos de alterac¸o\u2dces que foram realizadas e executa o
comando correspondente no banco de dados (inserc¸a\u2dco, exclusa\u2dco, atualizac¸a\u2dco);
7. Ao finalizar o processo, fechamos a conexa\u2dco com o banco de dados.
12.6 Estabelecendo uma conexa\u2dco com um banco de dados
O primeiro passo para criarmos uma aplicac¸a\u2dco com conexa\u2dco a um banco de dados e´ esta-
belecer a conexa\u2dco com o banco. Para estabelecermos a conexa\u2dco, devemos criar um objeto de
conexa\u2dco.
Ao criarmos uma insta\u2c6ncia da classe que ira´ se conectar, devemos informar uma string de
conexa\u2dco, que conte´m todos os para\u2c6metros para a conexa\u2dco com o banco de dados, como usua´rio
e senha.
A string de conexa\u2dco possui uma se´rie de para\u2c6metros, que pode variar de acordo com o banco
de dados utilizado. Os para\u2c6metros da string de conexa\u2dco sa\u2dco separados por ponto e v´\u131rgula, e
devem ser informados com a seguinte notac¸a\u2dco:
Co´digo 62: Padra\u2dco para Connection Strings
1 " N o m e d o P a r a^ m e t r o = V a l o r d o P a r a^ m e t r o "
Abaixo esta´ uma classe com string de conexa\u2dco para os bancos MySQL, Firebird e Post-
GreSQL respectivamente:
Co´digo 63: Padra\u2dco para Connection Strings
1 class Global
2 {
3 public static string cnmysql = " d a t a b a s e = d a d o s ; d a t a s o u r c e =
l o c a l h o s t ; u s e r i d = r o o t ; p a s s w o r d = p a s s w o r d " ;
4
Apostila C# 59
Apostila C#
Diogo Cezar Teixera Batista
20 de novembro de 2008
60
5 public static string cnfirebird = " U s e r = S Y S D B A ; P a s s w o r d = m a s t e r k e y ;
D a t a b a s e = C : \ \ d a d o s . f d b ; D a t a S o u r c e = l o c a l h o s t ; D i a l e c t = 3 ; C h a r s e t
= W I N 1 2 5 2 ; R o l e = ; C o n n e c t i o n l i f e t i m e = 1 5 ; P o o l i n g = t r u e ; M i n P o o l S i z e
= 0 ; M a x P o o l S i z e = 5 0 ; P a c k e t S i z e = 4 0 9 6 ; S e r v e r T y p e = 0 " ;
6
7 public static string cnpostgree = " U s e r I D = p o s t g r e s ; P a s s w o r d = p a s s w o r d ;
H o s t = l o c a l h o s t ; P o r t = 5 4 3 2 ; D a t a b a s e = d a d o s ; P o o l i n g = t r u e ; M i n P o o l S i z e
= 0 ; M a x P o o l S i z e = 1 0 0 ; C o n n e c t i o n L i f e t i m e = 0 " ;
8 }
12.7 Criando comandos
E´ poss´\u131vel executar comando no banco de dados atrave´s da classe SqlCommand. Ao criar um
objeto dessa classe, devemos informar o comando Sql a ser executado, bem como a conexa\u2dco a ser
utilizada. Estes para\u2c6metros podem ser informados tanto no construtor da classe SqlCommand
como tambe´m atrave´s das propriedades CommandText e Connection.
Os comandos SQL informados
deusanete
deusanete fez um comentário
eu queria prova de anatomia sistemica do prof breno gontijo
0 aprovações
Carregar mais