ado.net.exmplos.praticos

12
lder Oliveira [email protected] ADO. NET – Situações práticas C# ADO. NET – Situações práticas C# Programação em C# Hélder Oliveira helderjmo@gmail.

Upload: helder-oliveira

Post on 17-Dec-2014

85 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Ado.net.exmplos.praticos

ADO. NET – Situações práticas

C# Programação em C#

Hélder Oliveira [email protected]

Page 2: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Sumário

• Ligação à Base de Dados• Comandos• Acesso a dados “Connected”• Acesso a dados “Disconnected”• Actualização dos dados (“Disconnected”)• DataSets através do assistente• Estruturas de Dados sem SGBD

Page 3: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Ligação à Base de Dados

• Estabelecimento de ligação:SqlConnection connection = new SqlConnection({connection

string});

• A “connection string” deverá ser sempre declarada de forma centralizada - através do ficheiro de configuração da aplicação ou de uma simples variável estática na class Program

• A conexão deverá ser sempre aberta e fechada, antes e depois do acesso aos dados da base de ados, respectivamente.

connection.Open();// (...)connection.Close();

Page 4: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Comandos

• A execução de comandos para Bases de Dados dos tipo SQL Server deve ser implementada através da instanciação da classe SqlCommand.

Exemplo:SqlCommand command = new SqlCommand("SELECT * FROM clientes WHERE id_cliente=" + idclient, connection);

• Este comando permite essencialmente a execução de queries SQL (SELECT, INSERT, UPDATE, DELETE) e de Stored Procedures.

Page 5: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Comandos

• A execução do comando deverá ser efectuada segundo um dos seguintes métodos:– ExecuteNonQuery, ExecuteScalar, ExecuteReader ou

ExecuteXmlReader

• Cada método deverá ser executado de acordo com a natureza da operação que se pretende realizar

• A fim de introduzir alguma simplicidade na execução de comandos em Bases de Dados, a Microsoft introduziu a biblioteca SqlHelper – que poderá ter-se em conta sempre que há necessidade de efecutar operações que não exijam elevados graus de felxibilidade e complexidade.

Page 6: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Acesso a dados “Connected”

• Este acesso inicia-se com a execução do método ExecuteReader

SqlDataReader dr = command.ExecuteReader();dr.Read();lblID.Text = dr["id_cliente"].ToString();lblNome.Text = dr["nome"].ToString();lblMorada.Text = dr["morada"].ToString();

• A leitura de cada registo é realizada através do método Read da classe SqlDataReader antes instanciada

Page 7: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Acesso a dados “Disconnected”

• Este tipo de acesso requer desde logo a intanciação de uma estrutura em memória capaz de acolher os dados: um DataSet:SqlConnection connection = new

SqlConnection(Program.connectionString);connection.Open();da = new SqlDataAdapter("SELECT * FROM Produtos", connection);ds = new DataSet();da.Fill(ds);dataGridView1.DataSource = ds.Tables[0];connection.Close();

• A transição dos dados entre a memoria secundária e a memória primária é garantida através de um objecto do tipo DataAdapter. O procedimento Fill do DataAdapter preenche o DataSet antes intanciado

Page 8: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Actualização dos dados (“Disconnected”)

• Depois de manipulados os dados em memória (DataSet), a transição destas mudanças para as correpondentes estruturas físicas efectua-se através do comando Update do DataAdapter:

SqlCommandBuilder cmd = new SqlCommandBuilder(da);DataSet dsChanges = ds.GetChanges();if (dsChanges != null){

da.Update(dsChanges);ds.AcceptChanges();

}

Page 9: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Actualização dos dados (“Disconnected”)

• Os registos que contém as mudanças efectuadas ao nível da memória podem ser obtidos através do método GetChanges, presente tanto em objectos do tipo DataSet como DataTable

• A classe SqlCommandBuilder permite “gerar” no DataAdapter instruções de Insert, Update ou Delete com base no comando Select associado a esse mesmo DataAdapter.

• Para limpar o registo de alterações no DataSet, deve-se executar o método AcceptChanges

Page 10: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# DataSets através do assistente• O Visual Studio permite a criação de DataSets de forma rápida e visual.

Ferramentas próprias permitem a criação de toda a estrutura do interesse da aplicação automaticamente com base no sistema físico:

Page 11: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# DataSets através do assistente

• Esta ferramenta permite criar estruturas apropriadas que são automaticamente convertidas em objectos (classes) descendentes das “primitivas” especificadas pela plataforma .NET (DataSet, DataTable, DataRow, etc)

• Incluí TableAdapters específicos• Possibilita definir métodos especificos para consulta ou

manipulação da Base de Dados.

Page 12: Ado.net.exmplos.praticos

Hélder Oliveira [email protected] ADO. NET – Situações práticas

C# Estruturas de Dados sem SGBD

• Os DataSets e todos os objectos a ele associados permitem criar estruturas de memória flexíveis e adaptáveis a uma vasta variedade de problema

• São estruturas completamente independentes de qualquer sistema de base de dados

• Permitem guardar e restaurar o seu estado e estrutura em ficheiros XML

• Pode traduzir-se num meio fácil de guardar registos ou estruturas de dados simples de forma bem estruturada e relacional