Classes de acesso a dados do .NET Framework.



Usando um objeto DataSet

O DataSet é uma representação relacional baseada em memória de dados e o principal objeto desconectado de dados conectado.
O DataSet contém uma coleção de objetos DataTable e DataRelation.
Os objetos do DataTable podem conter restrições de chave exclusivas e estrangeiras para reforçar a integridade dos dados.
O Data-Set também fornece métodos para clonar o esquema DataSet, copiar o DataSet, mesclar com outros objetos DataSet e recuperando alterações do DataSet.

DataTable

O objeto DataTable contém os objetos DataColumn os quais definem o esquema a que pertencem.
O objeto DataTable também contém os objetos DataRow que contém os dados.
Os Objetos DataRow contém as propriedades RowState e DataRowVersion.
A propriedade RowStateindica se o DataRow deve ser inserido, atualizado ou eliminado da base de dados.
O objeto DataRow contém uma cópia dos dados da base de dados. Este recurso possibilita o roll back de dados.
O objeto DataSet é uma representação em memória dos dados no banco de dados com todas as suas propriedades relacionais. Portanto, o objeto DataSet contém as coleções de objetos DataTable e DataRelation
Os objetos DataSet e DataTable podem ser serializados ou desserializados de um stream ou XML.
Os dados do DataSet, DataTable e DataRow podem ser anexados(mergeados) dentro de um objeto DataSet. O recurso LINQ para o DataSet contém um mecanismo que permite escrever complexas queries contra dados na memória usando C# ou VB NET.

Classes Conectadas do ADO.NET

São classes que transferem dados do lado do servidor(BD) para o lado do cliente(Web Server).

Principais classes de Acesso a dados (Access Providers)

OleDb Classe para acesso a bases de dados genéricas de muitas fontes de dados
Elas proporcionam acesso a bd muito antigas ( como o MS SQL SRV 6.5 e versões anteriores) ou a bd não nativas da Microsoft, como Sybase, DB2/400 e o Microsoft Access.

ODBC É uma classe de uso geral para diversas bases de dados. São classes 'antiquadas' que são usadas quando nenhum novo método de acesso foi desenvolvido para o bd.
Não é muito utilizado porque depende de configuração local na máquina do cliente muitas vezes.

SQL Server É uma classe desenvolvida exclusivamente para o MS SQL Server e é muito similar ao 'provider' OLEDB, só que exclusivo para bd SQL Server.
Esta classe são feitas para as versões 7, 2005 e 2008.

Oracle É uma classe desenvolvida exclusivamente para o bd Oracle para acessar o listener fornecido pela própria Oracle. É similar ao OleDb mas tem performance superior.

Principais Providers dentro das Classes



Acesso aos Bancos de dados

1-A primeira coisa que você precisa ter é uma fonte de dados e uma maneira de acessá-la.
    A natureza dessa fonte de dados muitas vezes determina como devemos acessá-la porque, seja qual for, foi feita uma classe ou específica ou genérica que faz isso .
Praticamente sempre você vai precisar de alguma ferramenta para acessar um banco de dados.
Se for um bd Access você vai precisar do Office. Não se esqueça que se o office for de 32 bits você deverá compilar a sua app como 32 bits senão as dlls do office não estarão disponíveis para a sua aplicação. Os componentes para este tipo de bd estão no Microsoft Data Objects que são instalados com o office ou você poderá baixar o MDACTYPE para isto.
Se a bd for MS SQL SRV, você precisará instalar o SQL Client pelo menos, no caso de sua máquina não ser também a servidora do banco de dados. Normalmente, se sua máquina é o servidor web é recomendado que o servidor de banco de dados seja outra máquina, não só para ter maior performance mas por motivos de segurança.
Se se bd for um Oracle você precisa instalar um client compatível com a versão da base de dados que deseja acessar. A bd Oracle fala com o resto do mundo através de um tunelamento, chamado Listener.
Este objeto vem junto com o client.

2-Depois da base de dados acessível (servidor, local) a próxima coisa que você vai precisar é da classse Connection (DBConnection).

3-Para fazer a connexão você precisa determinar os parâmetros que serão usados como servidor, base de dados, usuário, senha, tipo de autenticação, etc. O objeto que define esses parâmetros é chamado de string de conexão.    Quando essas informações foram definidas, podemos abrir a conexão com a fonte de dados.
Importante : Nunca se esqueça de fechar a conexão com o banco de dados.

4-Os parâmetros de conexão são : Servidor(Server), Base de dados(Database), Usuário(User), Senha(Password) e o tipo de segurança envolvida que pode ser integrada com o windows (trusted connection).
Sendo assim um string de conexão pode ser desta maneira:
SQL Client "Server=xxxx;Database=yyy;Trusted_Connection=true";
"Server=xxxx;Database=yyy;User=zzz,Password=kkk";

OLEDB "Data Source=xxxx;Initial Catalog=yyy;integrated security=true";
"Data Source=xxxx;Initial Catalog=yyy;trusted_connection=true";
"Data Source=xxxx;Initial Catalog=yyy;UID=zzz,pwd=kkk";

ODBC

A conexão com o ODBC normalmente utiliza parametros salvos em arquivos .udl(Universal Data Link).
Os arquivos .udl são arquivos tipo texto simples.
Exemplo:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\pasta\arqAccess.mdb;Persist Security Info=False;

Objeto DBCommand

É ele que envia o comando ao SQL Server informando o que você deseja fazer com os dados do servidor.
O objeto DBCommand pode enviar os 3 tipos de comandos possíveis para o SQL Server:

Data Manipulation Language(DML) Este é o comando normalmente usado para enviar ou receber infos do servidor SQL. Os comandos DML mais comuns são insert, update e até o delete.

Data Description Language(DDL) É a linguagem usada para modificar a estrutura de tabelas e outros itens do servidor SQL Server. Os comandos DDL mais comuns são o Alter (Database, Table, etc..)

Data Control Language(DCL) São o conjunto de comandos para permitir ou definir o acesso dos usuários ao servidor colo logins, schemas, users, etc.

O objeto DBCommand sempre é dado contra uma conexão já aberta.
O objeto DBCommand tem as propriedades CommandText e CommandType para definir o que deve ser feito e como.
Por exemplo, para chamar uma Stored Procedure o parâmetro CommandText tem que ser exatamente o nome da procedure a ser chamada (cmd.ConnectionText="userStoredProc") e o parâmetro CommandType deve indicar que o alvo do comando é uma stored procedure (CommandType=CommandType.StoredProcedure).
Ainda, no caso de Stored Procedures o objeto DBCommand armazena os parâmetros a serem passados para a Stored Procedure com a sintaxe : cmd.Parameters("campo").Value.

Resultado ou retorno de dados

Tipos de Resultados das Queries

Podemos ter 3 tipos de resultados ao executar uma querie:

1-Não retorna nada além de um Status (ExecuteNonQuerie) : É um comando que ao ser executado no SQL não retorna nenhum dado.
Como exemplo cito os comandos delete, truncate table x.

2-Retorna um dado apenas (ExecuteScalar) : Acontece quando o SQL Server retorna um dado, apenas uma linha de resposta.
Esta linha única de dados pode ser um número inteiro, um tipo longo ou um string. Como o .NET é uma linguagem fortemente tipada, o tipo do retorno é critico para não dar erro na execução da querie.
O exemplo típico deste tipo de querie é um Select count(*) from tabela.

3-Retorna um DataSet ( ou RecordSet como era dito antigamente ) : Retorna um conjunto de dados de uma tabela ou de outro elemento que retorna diversos campos e diversas linhas de dados.

Além do tipo do resultado o objeto DBCommand define o acesso as informações e devemos seguir as regras do objeto criado para acessá-las.

Tipo de resultado desejado

1-cmd.ExecuteReader o cursor criado no servidor para este tipo de comando só permite acessar as informações apenas para leitura, apenas para frente.
Combinando este controle com o DBExecuteReader temos o controle de acesso a dados ideal para preencher ListBox, DropDownList e GridView desde que se deseje apens ler e não modificar os dados.

Exibindo as informações obtidas

1-ListBox Control É um dos controles mais simples e mais fáceis de usar do .NET Framework porque ele simplesmente exibe o dado, não permite edição ou qualquer outra ação. Possui uma coleção de itens e cada item desta coleção é chamado de ListItem. O Objeto ListItem tem uma propriedade chamada Text que é o texto exibido ao usuário e a propriedade Value que é o valor do item que poderá ser enviado de volta ao servidor num postback.
Exemplo:
<asp:ListBox ID="lstbox1" runat="server" DataSourceID="sqlsrv1" DataTextField="Campo1" DataValueField="Campo2"> </asp:listbox>

2-DropDownList Control Exibe uma lista de opções para que o usuário escolha uma delas.
Também possui uma coleção de itens. Para determinar qual valor foi selecionado temos as propriedades SelectedValue ou SelectedIndex.
Exemplo:
<asp:DropDownList DataSourceID="SrvSQL1" DataTextField="Campo1" DataValueField="Campo2"> </asp:DropDownList>

3-CkeckBox eRadioButton List Controls São controles muito usados em asp net e podemos associar eles aos dados retornados do BD. O único inconveniente seria que seria um checkbox ou radiobutton para cada registro retornado do banco de dados
Exemplo:
<asp:CheckBoxList DataSourceID="SrvSQLx" DataTextField="Campo1" DataValueField="Campo2"> </asp:DropDownList>

4-BulletList Control Este controle pode ser exibido com(ol) ou sem ordem(ul). Através da propriedade BulletStyle podemos controlar a aparência deste controle(Disc, Circle ou Square).
Infelizmente nem todos os browsers tem esses estilos mas podemos colocar uma imagem no lugar do bullet.
A propriedade bullet style também pode trocar o bullet por números ( romanos, arábicos ), por letras(A a Z- maiúsculas ou minúsculas) ou mesmo começar a contagem de itens a partir de um número desejado.

Controles Data-Bound Compostos

São controles que podem exibir os headers dos campos bem como os dados desses campos.

GridView

É o mais famoso e versátil item de exibição de dados vindos de bancos de dados. Neste controle podemos mover as colunas para a ordem que desejamos, ordenar, paginar, editar entre outros recursos.
Lembra muito uma planilha do Excel.
O GridView possui uma coleção de GridViewRow (registros) e GridViewField (campos). O GridViewRow herda as propriedades do objeto TableRow e o GeidViewField herda as propriedades do objeto cell.
Uma das características mais interessantes deste controle é que possui propriedades para mudar seu estilo para qualquer tipo que o usuário deseje. Propriedades como GridViewStyle, HeaderViewStyle, FooterStyle, RowStyle, Alternating-RowStyle(Famoso zebradinho) são padrões que formatam e padronizam os estilos de acordo com boas sugestões da Microsoft.