Você está na página 1de 0

Projecto de Sistemas Industriais

C#.NET

Parte III

ESTCB - IPCB
ESTCB - IPCB

ESTCB - IPCB

ESTCB - IPCB

Departamento de Engenharia Informática

C# - ADO.NET
C# - ADO.NET

O ADO.NET fornece acesso consistente a fontes de dados, como por exemplo o SQL Server, assim como a outras fontes acessíveis via OLE DB, XML ou ODBC.

As aplicações podem utilizar o ADO.NET para estabelecer ligações a bases de dados por forma a manipular os dados.

As classes para trabalhar com o ADO.NET estão no System.Data.xxxx, em que xxxx refere-se à especialização do fornecedor de acesso aos dados.

Deste forma, pode-se dizer que o ADO.NET é um conjunto de classes para trabalhar com dados.

Principais características:

Um sucessor do ADO mais flexível

Um sistema desenhado para ambientes desconectados

Um modelo de programação com suporte avançado para XML

Um conjunto de classes, interfaces, estruturas e enumerações que gerem o acesso a dados dentro do framework

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 3 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
3
Departamento de Engenharia Informática
Sumário – C#.NET
Sumário – C#.NET

ADO.NET

DataSet

DataTable

DataColumn

DataRow

DataGrid

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 2 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
2
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

A nível do armazenamento de Dados, o ADO.NET suporta vários tipos:

Não estruturados;

Estruturados, não-hierárquicos

Ficheiros CSV (Com ma Separated Value), Folhas Microsoft Excel, Ficheiros, o Microsoft Exchange, o

Hierárquicos

Documentos XML e outros

Bases de Dados Relacionais

SOL Server, Oracle, Access, ODBC, etc

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 4 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
4
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

Um fornecedor de dados para ADO.NET é um conjunto de classes que pode ser usado para efectuar ligações a bases de dados, manipular e actualizar os dados:

SQL Server .NET Data Provider

OLE DB .NET Data Provider

ODBC .NET Data Provider

Outros (DB2/400, MySQL,

)

XxxConnection -exemplo, SqlConnection

o XxxTransaction -exemplo, SqlTransaction

o XxxException -exemplo, SqlException

o XxxError -exemplo, SqlError

XxxCommand -exemplo, SqlCommand

o XxxParameter -exemplo, SqlParameter

XxxDataReader -exemplo, SqlDataReader

XxxDataAdapter -exemplo, SqlDataAdapter

XxxPermission -exemplo, SqlClientPermission ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
XxxPermission -exemplo, SqlClientPermission
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
5
Departamento de Engenharia Informática
C# - ADO.NET 1. Abrir ligação SqlConnection conn = new SqlConnection("SERVER=SQLSERVER; INTEGRATED SECURITY =
C# - ADO.NET
1. Abrir ligação
SqlConnection conn = new SqlConnection("SERVER=SQLSERVER; INTEGRATED SECURITY = TRUE; INITIAL
CATALOG=ISEP");
conn.Open();
2. Executar comando
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT cod, descricao FROM detalhes WHERE zona=42 “;
reader = cmd.ExecuteReader();
3. Processar linhas no reader
while(reader.Read())
{
int cod = (int)reader[O];
cmbDescricao. Items.Add(reader[1].ToString());
}
4. Fechar reader
if(!reader.IsClosed)
reader.Close();
5. Fechar ligação
conn.Close();
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
7
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

Cenários Conectados

Um cenário conectado é aquele no qual os utilizadores estão permanentemente ligados à bases de dados

Vantagens:

 

É mais fácil exercer segurança ao nível do ambiente;

A concorrência é mais fácil de controlar;

Os dados estão mais actualizados que nos outros cenários;

Desvantagens

É necessário haver uma ligação constante ao servidor;

Escalabilidade;

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 6 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
6
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

Cenários Desconectados

Num ambiente desconectado, um sub-conjunto de dados pode ser copiado e modificado independentemente e mais tarde as alterações podem ser introduzidas de novo na base de dados

Vantagens

Pode-se trabalhar a qualquer altura e pode-se efectuar uma ligação à base de dados apenas quando necessário;

Outros utilizadores podem usar os recursos;

Este tipo de ambientes aumenta a escalabilidade e desempenho das aplicações;

Desvantagens

Os dados nem sempre estão actualizados;

Podem ocorrer conflitos de dados que têm que ser resolvidos;

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 8 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
8
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET
1. Abrir a ligação SqlConnection conn = new SqlConnection("SERVER=SQLSERVER; INTEGRATED SECURITY = TRUE; INITIAL
1. Abrir a ligação
SqlConnection conn = new SqlConnection("SERVER=SQLSERVER; INTEGRATED SECURITY = TRUE;
INITIAL CATALOG=ISEP");
conn.open();
2. Preencher o DataSet
System.Data.DataSet ds = new System.Data.DataSet(); System.Data.Sql.sqlDataAdapter da =
new System.Data.Sql.SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM [DETALHES]";
cmd.Connection = conn;
da.SelectCommand = cmd;
da.Fill(ds);
3. Fechar a ligação
conn.Close() ;
4. Processar o DataSet
foreach(DataRow r in ds.Tables[O] .Rows)
r ["preco"] = r[preco] * 1.05;
5. Abrir a ligação
conn.Open() ;
6. Actualizar a fonte de dados
System.Data.Sql.SqlDataAdapter da = new System.Data.Sql.SqlDataAdapter(
"SELECT * FROM [DETALHES]", conn); System.Data.Sql.SqlCommandBuilder cb =
new System.Data.Sql.SqlCommandBuilder(da);
da.Update(ds) ;
7. Fechar a ligação
conn.Close() ;
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 9 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
9
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

Executar comandos que retornem um só registo

// Definir uma ligação a um fornecedor do tipo OLEDB para Access OleDbConnection conn =
// Definir uma ligação a um fornecedor do tipo OLEDB para Access OleDbConnection conn = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0iData Source= C:\DSN\Teste.mdbiPersist Security
Info=False");
//Abrir a ligação
conn.Open();
//Definir um novo comando do tipo OLEDB
OleDbCommand cmd = new OleDbCommand();
//Colocar o texto do comando
cmd.CommandText = "SELECT NOME FROM PESSOA WHERE NUMERO = ?“;
//Indicar ao comando qual é a ligação que vai usar
cmd.Connection = conn;
//Definir um parametro do tipo inteiro para conter o "Número" OleDbParameter parm =
cmd.Parameters.Add(new OleDbParameter("@Numero", OleDbType.Integer));
//Colocar o valor do parametro "Número". Quero saber o nome do cliente cujo código é 1
cmd.Parameters["@Numero"] .Value=l;
//Executar o comando que só irá retornar um valor
//Converter o resultado numa string
//Colocar o valor de retorno na respectiva caixa de texto
txtNome.Text = cmd.ExecuteScalar() .ToString();
//Fechar a ligação
conn.Close();
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 11 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
11
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

Namespaces necessários

System.Data – para as classes base do ADO.net (ex, DataSet).

System.Data.SqlClient – para as classes correspondentes ao provider para SQL Server;

System.Data.OleDb – para as classes correspondentes ao provider para OLE DB;

System.Data.SqlTypes – para as classes correspondentes aos tipos de dados nativos do SQL Server.

System.Data.Common – para as estruturas de dados, classes e interfaces comuns a todos os providers (ex, DataSet)

System.Xml – para as classes de manipulação de XML via DataSet;

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 10 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
10
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

Executar comandos que não retornem registos (inserir, actualizar ou remover registos)

//Definir uma ligação a um fornecedor do tipo OLEDB para Access OleDbConnection conn = new
//Definir uma ligação a um fornecedor do tipo OLEDB para Access OleDbConnection conn = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0iData Source= C:\DSN\Teste.mdbiPersist Security
Info=False");
//Abrir a ligação
conn.Open();
//Definir um novo comando do tipo OLEDB
OleDbCommand cmd = new OleDbCommand();
//Colocar o texto do comando
cmd.CommandText = "INSERT INTO TRABALHOS VALUES(?, ?)";
//Indicar ao comando qual é a ligação que vai usar
cmd.Connection = conn;
//Definir os parametros para inserir os valores
OleDbParameter parmNumero = cmd.Parameters.Add(new OleDbParameter("@Numero", OleDbType.Integer));
OleDbParameter parmNome = cmd.Parameters.Add(new OleDbParameter("@Nome", OleDbType.Char)) ;
// Inserir os valores
for(int i=O; i<cmbNomes.Items.Count; i++)
{
parmNumero.Value = i+l;
parmNome.Value = cmbNomes.Items[i];
//Executar o comando para inserir os valores
cmd.ExecuteNonQuery();
}
//Fechar a ligação
conn.Close();
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 12 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
12
Departamento de Engenharia Informática
C# - ADO.NET
C# - ADO.NET

Executar comandos que retornem registos para preenchimento de informação

//Definir uma ligação a um fornecedor do tipo OLEDB para Access OleDbConnection conn = new
//Definir uma ligação a um fornecedor do tipo OLEDB para Access OleDbConnection conn = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\DSN\Teste.mdb;Persist Security
Info=False");
//Abrir a ligação
conn.Open() ;
//Definir um novo comando do tipo OLEDB
OleDbCommand cmd = new OleDbCommand();
//Colocar o texto do comando
cmd.CommandText = "SELECT NOME FROM PESSOA";
//Indicar ao comando qual é a ligação que vai usar
cmd.Connection = conn;
//Definir um DataReader para ler os dados
//DataReader = forward only, read only. Muito rápido.
//Executar o comando e associá-lo ao reader
OleDbDataReader reader = cmd.ExecuteReader();
//Percorrer o reader e colocar os valores
while(reader.Read())
cmbNomes.Items.Add(reader[O] .ToString());
//Se o reader não estiver fechado, fechar
if( !reader.IsClosed )
reader.Close();
//Fechar a ligação
conn.Close() ;
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 13 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
13
Departamento de Engenharia Informática
C# - DataSet
C# - DataSet

Propriedades

CaseSensitive

Controla se as comparações de strings são ou não sensíveis a Maiúsculas / Minusculas

DatasetName

Nome do Dataset

DesignMode

Indica se o Dataset está ou não em modo Design

EnforceConstraints

Controla se o Dataset vai ou não forçar constraints

ExtendedProperties

Colecção de propriedades dinâmicas

Locale

Definições de linguagens, usadas para comparar strings

HasErrors

Indica se o Dataset tem ou não erros

Namespace

Nome do namespace usado quando o Dataset grava ou carrega os dados para o XML

Prefix

Prefixo do namespace usado quando o Dataset grava ou carrega os dados para o XML

Relations

Colecção de relações. Contém objectos DataRelation

Tables

Colecção de tabelas. Contém objectos DataTable

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 15 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
15
Departamento de Engenharia Informática
C# - DataSet
C# - DataSet

Os resultados obtidos através da execução de comando através do ADO.NET podem ser processados directamente ou colocados num objecto ADO.NET DataSet.

O objecto Dataset contém um ou mais objectos Data Table. Assim, os dados que vão “alimentar” a aplicação estão armazenados neste objecto.

Construtores

Dataset()

Cria um Dataset

Dataset(string Nome)

Cria um Dataset, com um determinado nome

Dataset(SerializationInfom

usado pelo .Net. Não é para ser utilizado directamente

StreamingContext)

Eventos

MergeFailed

Ocorre quando o método Merge falha

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 14 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
14
Departamento de Engenharia Informática
C# - DataSet
C# - DataSet

Métodos

AcceptChanges–

Aceita / Rejeita todas as alterações pendentes Dentro do Dataset. Funciona com um Commit /

 

Rollback local. Aceita todas as alterações pendentes Dentro do Dataset. Funciona com um

RejectChanges BeginInit e EndInit

Usado internamente pelo Visual Studio .Net, antes e depois de adicionar informação sobre o Commit local.

Clear

Schema do Dataset

Clone

Apaga todos os DataTable’s do Dataset

Copy

Cria um novo Dataset com o mesmo schema, mas sem dados

Novo Dataset com o mesmo schema e com os mesmos dados

GetChanges

Cria um novo Dataset com o mesmo schema, mas apenas com as linhas que foram modificadas

GetXml

do Dataset original

Devolve os dados do Dataset em XML (string)

GetXmlSchema

 

HasChanges

Devolve o schema do Dataset em XML (string)

 

Indica se há alguma alteração pendente no Dataset.

Merge

Carrega e sincroniza dados de outro Dataset, DataTable ou Array de DataRows para o Dataset

ReadXml

que chama o método.

ReadXmlSchema

Lê dados XML a partir de um ficheiro, stream, TextReader ou XMLReader.

Reset

Lê informação XML schema a partir de um ficheiro, stream, TextReader ou XMLReader.

WriteXml

Faz um reset ao Dataset, de forma a que fique com estado original do Dataset

 

Escreve o conteúdo do DataSet em XML, para um ficheiro, stream, TextReader ou XMLReader.

WriteXmlSchema

Escreve o conteúdo do esquema do DataSet em XML Schema, para um ficheiro, stream,

TextReader ou XMLReader. ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 16
TextReader ou XMLReader.
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
16
Departamento de Engenharia Informática
C# - DataSet
C# - DataSet

Criar um DataSet programaticamente

//Definir um DataSet chamado "AULAS" DataSet dsAulas = new DataSet("AULAS"); //Definir as DataTable
//Definir um DataSet chamado "AULAS"
DataSet dsAulas = new DataSet("AULAS");
//Definir as DataTable
DataTable dtAlunos;
DataTable dtInscricoes;
//Dizer que as tabelas pertencem ao DataSet
dtAlunos = dsAulas.Tables.Add("ALUNOS");
dtInscricoes = dsAulas.Tables.Add("INSCRICOES");
//Definir a estrutura das tabelas
dtAlunos.Columns.Add("NUMERO", typeof(int));
dtAlunos.Columns.Add("NOME", typeof(string));
dtInscricoes.Columns.Add("NUMERO_ALUNO", typeof(int));
dtInscricoes.Columns.Add("NUMERO_DISCIPLINA", typeof(int));
//Definir as chaves primárias das tabelas
dtAlunos.Constraints.Add("PK_ALUNOS", dtAlunos.Columns["NUMERO"], true);
dtInscricoes.Constraints.Add("PK_INSCRICOES", new
DataColumn[] {dtInscricoes.Columns["NUMERO_ALUNO"], dtInscricoes.Columns["NUMERO_DISCIPLINA"]},
true);
//Definir as relações entre as tabelas
dsAulas.Relations.Add("R_ALUNO_DISCIPLINAS",dtAlunos.Columns["NUMERO"],dtInscricoes.Columns["NUME
RO_ALUNO"]);
//Mostrar o DataSet numa grelha
dgAulas.DataSource = dsAulas;
//Mostrar uma tabela especifica do DataSet
dgAulas.DataMember = "ALUNOS";
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 17 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
17
Departamento de Engenharia Informática
C# - DataSet
C# - DataSet
C# - DataSet ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 19 Departamento
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 19 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
19
Departamento de Engenharia Informática
C# - DataSet
C# - DataSet

Um objecto Dataset consiste num repositório de dados em memória, no lado do cliente, e apresenta-se como o principal representante do conjunto de objectos do modelo ADO.NET a suportar a arquitectura desconectada.

Um objecto Dataset nada sabe acerca da fonte de dados de onde provêm os seus dados, podendo estes provirem de diferentes bases de dados. Isto acontece porque, o objecto Data Adapter serve de ponte entre o DataSet e a base de dados, pois utiliza a informação de como ligar e aceder à base de dados (a partir dos objectos connection e command), ao mesmo tempo que proporciona métodos para preencher o DataSet de dados, assim como para efectivar a alteração dos dados, realizada ao nível do DataSet, na fonte de dados.

Um objecto Dataset consiste numa hierarquia de um ou mais objectos Data Table

e Data Relation.

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 18 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
18
Departamento de Engenharia Informática
C# - DataSet
C# - DataSet

Um objecto Data Table consiste de um ou mais objectos Data Column, Data Row

e

Constraint.

Um objecto Data Relation define o modo como as tabelas de um objecto Dataset estão relacionadas. O objecto Data Relation é essencialmente utilizado para gerir as restrições e, desse modo, simplificar a navegação entre tabelas relacionadas.

Os objectos Data Column definem os dados em cada coluna da tabela, incluindo

o

seu nome, tipo de dados, etc.

Os objectos Data Row contêm os dados para cada registo da tabela.

Os objectos Constraint são utilizados para manter a integridade dos dados. Uma restrição de chave primária assegura que os valores numa coluna, tal como a coluna de chave primária, são únicos. Uma restrição de chave forasteira determina como os registos de uma tabela são afectados quando os registos correspondentes duma tabela relacionada são alterados ou eliminados.

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 20 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
20
Departamento de Engenharia Informática
C# - DataTable Construtores DataTable() Cria um novo DataTable DataTable(nome) Cria um novo DataTable com
C# - DataTable
Construtores
DataTable()
Cria um novo DataTable
DataTable(nome)
Cria um novo DataTable com um determinado nome
DataTable(SerializationInfo
usado pelo .Net. Não é para ser utilizado directamente
StreamingContext)

Eventos

ColumnChanged

– Depois do conteúdo de uma coluna ser alterado

ColumnChanging

Antes do conteúdo de uma coluna ser alterado

RowChanged

Depois do conteúdo de uma linha ser alterado

RowChanging

Antes do conteúdo de uma linha ser alterado

RowDeleted

Depois de uma linha ser apagada

RowDeleting

Antes de uma linha ser apagada

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 21 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
21
Departamento de Engenharia Informática
C# - DataTable
C# - DataTable

Métodos

AcceptChanges

– Aceita/rejeita todas as alterações pendentes da tabela (como commit/rollback para dados locais)

RejectChanges

BeginInit – EndInit

Usado internamente pelo Visual Studio .Net, antes e depois de adicionar informação sobre o Schema do Dataset

BeginLoadData

Desliga e volta a ligar as constraints. Util para carregar dados

EndLoadData

Clear

Apaga todas as linhas do DataTable

Clone

Cria um novo DataTable, com o mesmo schema, mas sem dados

 

Copy

Cria um novo DataTable, com o mesmo schema e mesmo dados

 

Compute

Devolve o valor de uma expressão agregada (ex: sum, max,

),

baseado no conteudo do DataTable

GetChanges

Cria um novo DataTable com o mesmo schema, mas apenas com as linhas que foram modificadas do DataTable original

GetErrors

Devolve um array de DataRows, referentes às linhas que têm erros

 

ImportRow

Importa uma linha já existente para o DataTable

LoadDataRow

Adiciona uma linha ao DataTable, passando os valores dessa linha através de um array

NewRow

Cria e devolve uma nova linha do DataTable (vazia)

Reset

Faz um reset ao DataTable, de forma a que fique com estado original do DataTable

Select

Devolve um array de DataRows, baseado num determinado critério de pesquisa

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 23 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
23
Departamento de Engenharia Informática
C# - DataTable
C# - DataTable

Propriedades

CaseSensitive

Controla se é ou não sensível a maiusculas/minu.

ChildRelations

Colecção com DataRelations, que contêm dados dependentes

Columns

Colecção de colunas (DataColumn)

Constraints

Colecção de constraints

DataSet

Dataset onde o DataTable está (null se não estiver associado a nenhums dataset)

DefaultView

DataView por defeito

DesignMode

Indica se o DataTable está em modo design

ExtendedProperties

Colecção de propriedades dinâmicas

HasErrors

Indica se há algum erro na tabela

Locale

Definições de linguagens, usadas para comparar strings

MinimumCapacity

Quantidade (em linhas-rows) de memória que o DataTable reserva inicialmente

Namespace

Nome do namespace usado quando o DataTable grava ou carrega os dados para o XML

Prefix

Prefixo do namespace usado quando o DataTable grava ou carrega os dados para o XML

ParentRelations

Colecção com DataRelations, que contêm dados “pai”

PrimaryKey

Array de DataColumns com a chave primária

Rows

Colecção de linhas (DataRow) da tabela

TableName

Nome da DataTable

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 22 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
22
Departamento de Engenharia Informática
C# - DataColumn
C# - DataColumn

Propriedades

AllowDBNull

– Controla se a coluna aceita ou não NULLs

 

AutoIncrement

Controla se a coluna gere valores autoincrement

 

AutoIncrementSeed

1º valor do autoincrement

 

AutoIncrementStep

controla quanto o autoincrementa salta

 

Caption

Titulo da coluna quando numa grelha

 

ColumnMapping

Controla como o ADO.Net armazena o conteudo da coluna em XML

 

ColumnName

Nome do objecto DataColumn

 

DataType

Controla o tipo de dados armazenado pela coluna

 

DefaultValue

Controla o valor por defeito para esta coluna, quando são criadas novas

 

Expression

linhasControla

como o ADO.Net

calcula

o

valor da coluna

(para colunas

baseadas em

expressões)

ExtendedProperties

Colecção de propriedades dinâmicas

 

MaxLength

Tamanho máximo das colunas string

 

Namespace

Nome do namespace usado quando grava ou carrega os dados para o XML

 

Prefix

Prefixo do namespace usado grava ou carrega os dados para o XML

 

Ordinal

Indice da coluna na colecção de colunas do DataTable

 

ReadOnly

Controla se a coluna é ou não só de leitura

 

Table

DataTable a que pertence a coluna

 

Unique

Controla se a coluna necessita ou não de ter valores unicos

 
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 24 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
24
Departamento de Engenharia Informática
C# - DataRow
C# - DataRow

Propriedades

HasErrors-

Indica se a linha tem ou não erros

Item

Propriedade indexada que permite o acesso (ler e alterar) os valores da linha. Indice- nº ordem da coluna; nome; referência ao DataColumn correspondente.

ItemArray

Acesso aos valores da linha, usando um array de objectos

RowError

Informação sobre o erro associada à linha

RowState

Estado da linha. Valores possíveis: Added; Deleted; Detached (linha não pretence ainda a um DataTable); Modified; Unchanged

Table

Tabela a que pertence o DataRow

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 25 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
25
Departamento de Engenharia Informática
C# - Exemplos
C# - Exemplos

Find- Método da DataRowColection, que procura uma linha com base na sua chave primária

Exemplos: DataRow row= Tabela.Rows.Find(“ValorAProcurar”); DataRow row= Tabela.Rows.Find(3323); object[] criterio =
Exemplos:
DataRow row= Tabela.Rows.Find(“ValorAProcurar”);
DataRow row= Tabela.Rows.Find(3323);
object[] criterio = new object[] {“Valor1”, 4343};
DataRow row= Tabela.Rows.Find(criterio);
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
27
Departamento de Engenharia Informática
C# - DataRow
C# - DataRow

Métodos

AcceptChanges

Aceita ou Rejeita as alterações da linha.

 

RejectChanges

 

BeginEdit – CancelEdit – EndEdit

Inicia, Cancela ou Guarda (localmente) o processo de alteração dos dados da linha

 

ClearErrors

Limpa os erros associados à linha

 

Delete

Apaga a linha. Na realidade, a linha fica apenas marcada para apagar (RowState = Deleted)

 

GetChildRows

Devolve

um

array

de

DataRows,

para

linhas

dependentes

da

actual,

com

base

numa

DataRelation

 

GetColumnError

Obtem informação de erro sobre uma coluna específica

 

GetColumnsInError

Array de DataColumns, com todas as colunas que têm erros nesta linha

 

GetParentRow

Devolve um DataRow, para a linha “pai” da actual, com base numa DataRelation

 

GetParentRows

Devolve um array de DataRows, para as linhas “pai” da actual, com base numa DataRelation

HasVersion

Indica se a linha tem não uma determinada versão dos dados

 

IsNull-

Indica se uma determinada coluna está ou não Nula

 

SetColumnError

Alterar a informação de erro de uma determinada coluna

 

SetParentRow

Alterar a informação de erro da linha “pai”, com base numa DataRelatio

 
ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 26 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
26
Departamento de Engenharia Informática
C# - Exemplos
C# - Exemplos
Select- Método da DataTable, que devolve um array de linhas, baseado num determinado critério. DataRow[]
Select- Método da DataTable, que devolve um array de linhas, baseado num
determinado critério.
DataRow[] Linhas = Tabela.Select(“(Pais=’PT’) and (cidade <> ‘Leiria’)”);
Exemplos de Expressões no Select
xpto LIKE ‘%a’
- xpto acaba em a
xpto LIKE ‘a%’ – xpto começa por a
xpto = ‘O’’Brian’
- xpto = O’Brian (1 plica = 2 plicas)
#01/01/2003# - Datas
[campo com espacos] = 23
- Campos podem ter espaços, desde que fiquem entre parentesis rectos
Ordenar linhas devolvidas pelo Select
DataRow[] Linhas = Tabela.Select(“Pais=’PT’, “Cidade DESC”);
DataRow[] Linhas = Tabela.Select(“Pais=’PT’, “Cidade ASC”);
Linhas com determinado RowStatus devolvidas pelo Select
DataViewRowState Estado;
Estado = DataViewRowState.ModifiedOriginal | DataViewRowState.Deleted
DataRow[] Linhas = Tabela.Select(“”, “”, Estado);
//Devolve as linhas que foram modificadas ou apagadas.
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
28
Departamento de Engenharia Informática
C# - DataGrid
C# - DataGrid

O contolo DataGrid permite apresentar dados de uma tabela ou de uma colecção.

Os programadores podem selecionar quais as colunas que vão apresentar dados, personalizar as colunas, dotá-las de um cabeçalho e tratar os eventos que ocorrem quando o utilizador selecciona uma linha ou célula específica.

Fontes de dados que podem ser apresentadas numa DataGrid:

 

Objecto DataTable;

Objecto DataView;

Objecto ArrayList; Qualquer componente que implemente os interfaces IListSources ou IList;

É permitido apresentar um objecto DataTable contido num DataSet.

//myDataSet may contain more than one DataTable DataTable myDataTable = myDataSet.Tables[“Customers”]; dataGrid1.DataSource = myDataTable;

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 29 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
29
Departamento de Engenharia Informática
C# - DataGrid //Definir um DataSet chamado "AULAS“ DataGridTableStyle ts1 = new DataGridTableStyle();
C# - DataGrid
//Definir um DataSet chamado "AULAS“
DataGridTableStyle ts1 = new DataGridTableStyle();
ts1.MappingName = “Customers”;
/*
Adicionar GridColumnStyle e associar um nome
ao DataColumn na DataTable
Especificar o título da Coluna e o tamanho
*/
DataGridColumnStyle boolCol = new DataGridTextBoxColumn();
boolCol.MappingName = “Current”;
boolCol.HeaderText = “IsCurrent Customer”;
boolCol.Width = 150;
ts1.GridColumnStyles.Add(boolCol);
// Uma nova coluna
DataGridColumnStyle TextCol = new DataGridTextBoxColumn();
TextCol.MappingName = “CustName”;
TextCol.HeaderText = “Customer Name”;
TextCol.Width = 250;
ts1.GridColumnStyles.Add(boolCol);
//Associar o datagrigTableStyle ao GridTablestylesCollection.
DataGrid1.TableStryles.Add(ts1);
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
31
Departamento de Engenharia Informática
C# - DataGrid Por defeito o objecto DataGrid apresenta todas as colunas e todas as
C# - DataGrid
Por defeito o objecto DataGrid apresenta todas as colunas e todas as linhas da
fonte de dados (DataSource), sendo o título das colunas o nome das colunas.
A
propriedade
CurrentCell permite
obter
ou
especificar o Focus de uma

determinada célula.

//Set Focus to cell 3,5 mydataGrid1.CurrentCell =new DataGridCell(3,5);

O objecto DataGrid pode ser formatado em termos de apresentação. Pode-se modificar as cores do background, das linhas, dos títulos, das linhas selecionadas, e etc.

De forma a criar um estilo para a DataGrid, é instanciar um objecto DataGridTableStyle, adicionar um objecto DataColumnGridStyle a cada coluna que se pretende apresentar e finalmente associar o DataGridTableStyle à propriedade TableStyles do objecto DataGrid

ESTCB - IPCB Projecto de Sistemas Industriais, Henrique Proença - 2004/2005 30 Departamento de Engenharia
ESTCB - IPCB
Projecto de Sistemas Industriais, Henrique Proença - 2004/2005
30
Departamento de Engenharia Informática