bd / ado. net edson silva [email protected]. conteÚdo bases de dados relacionais (vantagens) bases...

30
BD / ADO. NET Edson Silva [email protected]

Upload: internet

Post on 17-Apr-2015

111 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

BD / ADO. NET

Edson [email protected]

Page 2: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

CONTEÚDO

• Bases de Dados Relacionais (Vantagens)• Bases de Dados Relacionais (Desvantagens)• Modelo Relacional• Acesso a Dados• Arquitetura de Acesso a Dados na plataforma .NET• Provedores de Dados• Strings de Conexão• Pool de Conexões• Execução de Comandos• Transações

Page 3: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Bases de Dados Relacionais (Vantagens)

• Resposta rápida aos pedidos de informação. Como os dados estão integrados numa única estrutura (a base de dados) a resposta a questões complexas processa-se mais velozmente.

• Acesso múltiplo. O software de gestão de base de dados permite que os dados sejam acedidos de diversíssimas maneiras. Nomeadamente, os dados podem ser visualizados através de pesquisas sobre qualquer um dos campos da tabela.

• Flexibilidade. Em consequência da independência entre dados e programas, qualquer alteração num desses elementos não implica modificações drásticas no outro.

• Integridade da informação. Dada a absoluta exigência de não permitir a redundância, as modificações de dados são feitas num só sítio, evitando-se assim possíveis conflitos entre diferentes versões da mesma informação.

• Melhor gestão da informação. Em consequência da localização central dos dados, sabe-se sempre como e onde está a informação.

Page 4: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Bases de Dados Relacionais (Desvantagens)

• A principal, e mais significativa, desvantagem dos sistemas de gestão de base de dados é o seu custo, não tanto em termos de preço do software de base, mas fundamentalmente em despesas de desenvolvimento

• Os custos resultantes duma má conceptualização são enormes. A construção duma base de dados deficiente tem consequências nefastas numa organização.

Page 5: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Modelo Relacional

• Tabelas

• Registros

• Colunas

• Chave

• Relacionamentos

Page 6: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso a Dados (ADO)

• A tecnologia para acessar dados na plataforma .Net é formada por um conjunto de classes, interfaces, estruturas

e enumerações do Framework.NET;

• Principais namespaces:• System.Data• System.Data.OleDb• System.Data.Odbc• System.Data.SqlClient• System.Data.OracleClient • System.Xml

Page 7: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Arquitetura da plataforma .NET

• A ADO.Net foi projetado para permitir versatilidade no acesso aos dados e centrada na representação dos dados no formato XML;

• A sua arquitetura permite dois tipos de acessos aos dados: Conectado e Desconectado;

• Os provedores de dados (Data Providers) são responsáveis por efetivamente acessar a fonte de dados, quer seja um banco de dados relacional, uma planilha do excel, um arquivo texto, uma classe de negócio, um webservice, etc.

Page 8: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Arquitetura da plataforma .NET

API ADO.NET

OLE DB .NET Data ProviderOLE DB .NET Data Provider

Fontes OLEDB(SQL Server 6.5)

OutrosData Providers

OutrosData Providers

Oracle, Interbase, DB2, MySQL, etc

SQL Server .NET Data Provider

SQL Server .NET Data Provider

SQL Server 7.0(e posterior)

Page 9: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Provedores de Dados – Data Provider

• Implementação ADO.NET para acessar determinada fonte dados, tipicamente um SGBDR;

• Os namespaces System.Data.OleDb e System.Data.Odbc permitem acessar fontes de dados através dos mecanismos OleDb e Odbc respectivamente. Mas apresentam uma performance inferior em relação aos provedores especializados e somente devem ser utilizados quando for necessário independência de provedor;

• Os namespaces Data.SqlCliente e Data.OracleClient representam os provedores de dados especializados para o SQL Server e Oracle respectivamente;

• A depender do SGBD a ser utilizado será necessário obter o provedor de dados específico. Ex: DB2, Firebird, MySQL, Postgree, etc.

Page 10: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Provedores de Dados – Data Provider

Componentes do Provedor de Dado•XxxConnection – SqlConnection, etc

•XxxTransaction – SqlTransaction, etc

•XxxException – SqlException, etc

•XxxError – SqlError, etc

•XxxCommand –SqlCommand, etc

•XxxParameter –SqlParameter, etc

•XxxDataReader –SqlDataReader, etc•XxxDataAdapter –SqlDataAdapter, etc•XxxPermission –SqlClientPermission, etc

Page 11: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Pool de Conexões

• Gerencia a utilização das conexões com o SGBD;

• A função do pool de conexões é manter um conjunto de conexões com o SGBD e fornecê-las a camada de Negócio ou Acesso a Dados, evitando o overhead na abertura e fechamento de conexões;

• A abertura de novas conexões pode ser limitada e é feita sob-demanda quando não há conexões disponíveis;

• A utilização de pool de conexões é essencial em aplicações web e distribuída.

Page 12: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Pool de Conexões

SGBD

Pool de ConexõesPool de Conexões

Componente de negócioComponente de negócio Componente de Acesso a DadosComponente de Acesso a Dados

...

Page 13: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Strings de Conexão

• Define os parâmetros para a realização de uma conexão com uma fonte de dados.

• É utilizada pela classe xxxConnection• Parâmetros

– SGBD– Banco de Dados– Usuário e Senha– Definição do Pool de Conexão– Timeout– Etc.

• O site http://www.connectionstrings.com possui strings para diversas fontes

Page 14: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Strings de Conexão

Exemplo para SQL Server: Data Source=servidor; Initial Catalog=banco; User Id=usuario; Password=senha; Pooling=true; Max Pool Size=100; Min Pool Size=10; Connection Timeout=15;

Page 15: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Conectado

• É o modelo de acesso tradicional;• A conexão com o SGBD é alocada enquanto durar as

operações de manipulação dos dados;• Apresenta maior performance que o modelo desconectado,

mas pode acarretar deficiência na escalabilidade;• Não é adequado para aplicações Web/Distribuídas com

grande volume de acesso.

Page 16: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional
Page 17: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Conectado

SQL Server 7.0(e posterior)

• Os recursos são alocados até finalizar a operação

1. Abrir Conexão

2. Executar comandos

3. Utilizar o Reader

4. Fechar o Reader

5. Fechar a conexão

SqlConnectionSqlConnection

SqlCommandSqlCommand

SqlDataReaderSqlDataReader

Page 18: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Desconectado

• No modelo desconectado os dados são obtidos e armazenados em memória;

• O namespace System.Data contém as classes que representam as entidades do mundo relacional:

• Tabela = DataTable• Campo = DataField• Linha = DataRow• Relacionamento = DataRelation

• Uma vez em memória os dados são manipulados e em seguida as alterações persistidas, através da abertura de uma nova conexão;

• Somente no momento da leitura e persitência a conexão é aberta com o SBGD

Page 19: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Desconectado

Server Data Store

Database

ConnectionStored

Procedure

DataSet

DataTable

DataTable

Page 20: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

http://adoguy.com

DataSetDataSet

Tables

DataTable DataTable

Rows Rows

DataRow DataRow

DataRelation

Constraint

ForeignKeyConstraint

Page 21: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Desconectado

• Os recursos não são alocados para o processamento dos dados

1. Abrir a conexão

2. Preencher o DataSet

3. Fechar a conexão

4. Manipular o DataSet

5. Abrir a conexão

6. Atualizar dados

7. Fechar a conexão

SqlConnectionSqlConnection

SqlDataAdapterSqlDataAdapter

DataSetDataSet

SQL Server 7.0(e posterior)

Page 22: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Desconectado

Data sourceDataAdapterDataTable

DataTable

DataSet

DataAdapter

FillFill

UpdateUpdateFillFill

UpdateUpdate

Page 23: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Desconectado

sp_SELECT

XxxCommandXxxCommand

SelectCommand UpdateCommand InsertCommand DeleteCommand

XxxDataAdapter

XxxCommandXxxCommand XxxCommandXxxCommand XxxCommandXxxCommand

XxxConnectionXxxConnection

sp_UPDATE sp_INSERT sp_DELETE

XxxDataReaderXxxDataReader

Page 24: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Acesso Desconectado

DataRow

DataColumn

DataTable

DataRelation Constraints

Page 25: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional
Page 26: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Execução de Comandos

• O ADO.NET é orientado a objetos e possui classes representando os elementos necessários para acessar a camada de dados;

• Existem classes representando os elementos comuns no acesso aos dados: conexão, comandos SQL, parâmetros, transações, etc

• A execução de comandos é simples, intuitiva e produtiva;

• É necessário utilizar os namespace do Data Provider a ser utilizado;

• Uma aplicação corporativa normalmente utiliza ambos o modelos de acesso a dados: Conectado e Desconectado.

Page 27: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Execução de Comandos (Conectado)

Abrindo e Fechando a conexão// Obtendo a string de conexão do arquivo de configuração

string stringDeConexao = ConfigurationSettings.AppSettings["STRING_CONEXAO"];

// Instanciando a conexão

SqlConnection con = new SqlConnection(stringDeConexao);

// Abrindo a conexão

con.Open();

//

// Executando comandos

//

// Fechando a conexão

con.Close();

Page 28: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Executando comando de atualização com parâmetrosstring insertCliente =

@"INSERT INTO cliente (cpf, nome) VALUES (@cpf, @nome)";

SqlCommand cmd = new SqlCommand(insertCliente, con);

// Adicionando o @cpf

SqlParameter p1 = new SqlParameter("@cpf",SqlDbType.Char,11);

P1.Value = "66176433567";

cmd.Parameters.Add(p1);

// Adicionando o @nome

SqlParameter p2 = new SqlParameter("@nome",SqlDbType.VarChar,50);

p2.Value = "José Maria R Santos Júnior";

cmd.Parameters.Add(p2);

// Executando o comando

cmd.ExecuteNonQuery();

Execução de Comandos (Conectado)

Page 29: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Execução de Comandos (Conectado)

Executando comando de consultastring query =

@"SELECT cli.nome, con.numero, con.saldo, con.data_abertura

FROM cliente cli

INNER JOIN conta con ON con.codigo_cliente = cli.codigo";

SqlCommand cmd = new SqlCommand(query, con);

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read()) {

string nome = reader["nome"].ToString();

int conta = Convert.ToInt32(reader["numero"]);

decimal saldo = Convert.ToDecimal(reader["saldo"]);

DateTime dt = Convert.ToDateTime(reader["data_abertura"]);

Console.WriteLine(nome + ", " + conta + ", " + saldo + ", " +

dataAbertura.ToString("dd/MM/yyyy"));

}

// Fechando o DataReader (Importante)

reader.Close();

Page 30: BD / ADO. NET Edson Silva edsoncs@gmail.com. CONTEÚDO Bases de Dados Relacionais (Vantagens) Bases de Dados Relacionais (Desvantagens) Modelo Relacional

Transações

• Uma transação garante que um grupo de comandos SQL seja executado com sucesso ou desfeito em caso de falha;

• Possui as seguintes características Atomicidade, Consistência, Isolamento e Durabilidade (ACID).