DataTables- ASP.NET/C#
2006-08-23

Embora as DataTables sejam um pouco esquecidas, enquanto se dá mais atenção a objectos mais versáteis de DataSet, estas são basicamente as fundações do próprio DataSet, e para desenvolvermos aplicações avançadas de bases de dados é importante perceber o seu funcionamento.
As DataTables são uma inovação da plataforma .net, e não devem ser confundidas com as vulgares tabelas de bases de dados. Geralmente uma ou mais DataTables são usadas num DataSet para construir um género de mini base de dados no cache do utilizador, e pode ser usada apenas por si própria, em situações que não requerem conectividade com a base de dados ou DataSets. É no fundo uma tabela de dados relacional guardada em memória. Tem uma definição estrutural própria, tal como as tableas de bases de dados, e várias propriedades e métodos associados como Columns, Rows, Clear, etc.
A sua utilidade varia, pode por exemplo ser útil para criar um carrinho de compras, em que temos numa tabela os vários produtos que se vão adicionando para comprar, isto é uma tabela que vai sendo criada pelo utilizador e fica por exemplo guardada numa sessão.
Para criar uma DataTable por programação, começamos por instanciar um objecto de DataTable. Depois criamos uma coluna (objecto DataColumn) e definimos as suas propriedades. Depois de definida a coluna adicionamo-la à colecção de colunas da nossa DataTable. É sempre necessário adicionar cada nova coluna. O código de exemplo é o que se segue. Vamos assumir que queremos ter os registos de um banco disponiveis em todas as nossas paginas criadas numa determinada sessão. Nestas situações, em que queremos o código acessível em qualquer das páginas, trabalhamos num ficheiro específico para o efeito: Global.asax que pode ser adicionado clicando em cima do projecto e escolhendo Add New Item e depois escolher Global Application Class.
//(verificar que se importa a biblioteca Data)
void Session_Start(object sender, EventArgs e)
{
// Instanciar um objecto de DataTable. Escolher o nome da DataTable;
exemplo: Registos de um banco
DataTable minhaDataTable = new DataTable("Registos");
// Criar novas referências de DataColumn e DataRow
DataColumn minhaDataColumn;
DataRow minhaDataRow;
// Criar a primeira coluna
minhaDataColumn = new DataColumn();
minhaDataColumn.DataType = System.Type.GetType("System.Int32");
minhaDataColumn.ColumnName = "NumeroConta";
minhaDataColumn.ReadOnly=true;
minhaDataColumn.Unique= true;
// Adicionar a coluna criada à colecção colunas
minhaDataTable.Columns.Add(minhaDataColumn);
// Criar e adicionar uma segunda coluna
minhaDataColumn= new DataColumn();
minhaDataColumn.DataType = System.Type.GetType("System.String");
minhaDataColumn.ColumnName = "NomeConta";
minhaDataColumn.ReadOnly= false;
minhaDataTable.Columns.Add(minhaDataColumn);
// Criar e adicionar uma terceira coluna
minhaDataColumn= new DataColumn();
minhaDataColumn.DataType = System.Type.GetType("System.Decimal");
minhaDataColumn.ColumnName = "SaldoConta";
minhaDataColumn.ReadOnly= false;
minhaDataTable.Columns.Add(minhaDataColumn);
// Colocar NumeroConta como chave primária
DataColumn[] minhaPrimaryKeyColumns = new DataColumn[1];
minhaPrimaryKeyColumns[0] = minhaDataTable.Columns["NumeroConta"];
minhaDataTable.PrimaryKey = minhaPrimaryKeyColumns;
// Instanciar agora 2 objectos de DataRow, ou seja 2 linhas, e adiciona-los
à colecção Rows
minhaDataRow = minhaDataTable.NewRow();
minhaDataRow["NumeroConta"] = 9037524;
minhaDataRow["NomeConta"] = "Conta Poupança";
minhaDataRow["SaldoConta"] = 345.50;
minhaDataTable.Rows.Add(minhaDataRow);
minhaDataRow = minhaDataTable.NewRow();
minhaDataRow["NumeroConta"] = 9266372;
minhaDataRow["NomeConta"] = "Conta Ordenado";
minhaDataRow["SaldoConta"] = 2473.88;
minhaDataTable.Rows.Add(minhaDataRow);
// Aceder os dados inseridos na DataTable criada
Response.Write("A DataTable de Registos de conta contém os seguintes dados: " +
"");
foreach (DataRow linha in minhaDataTable.Rows)
{
Response.Write ("NumeroConta: " + linha["NumeroConta"] + "");
Response.Write ("NomeConta: " + linha["NomeConta"] + "");
Response.Write ("SaldoConta: " + linha["SaldoConta"] + "");
Response.Write ( "" );
}
}
|
Escrito por Tânia Penedo Website do autor: http://www.taniapenedo.com Dados do autor: Programação multi-plataforma; C#, PHP, Java, MySQL, SQL-Server.
|