9. Acesso a Dados
Um das novidades no lançamento do primeira versão do Framework
.NET, foi o ADO.NET, sucessor do ADO que até então era o modelo de acesso a
dados da Microsoft.
Surgiu com a promessa de ser um modelo desconectado para um
mundo conectado: sua arquitetura era preparada para a Internet, onde as
aplicações poderiam abrir uma conexão e recuperar dados, fechar a conexão,
trabalhar desconectados e só voltar a abrir a conexão no momento de atualizar a
fonte de dados.
O ADO.NET cumpriu seu objetivo: Trouxe um modelo de acesso a
dados poderoso e bastante flexível, otimizado para aplicações remotas.
SQLDataSource e GridView
O modelo de acesso a dados proposto pelo ADO.NET embora poderoso,
é extramente complexo: para executar operações em uma fonte de dados o
desenvolvedor teria que utilizar uma grande quantidade de classes como
Connection, Transaction, Command, DataReader, DataAdapter, DataSet, DataTable
etc. e entender como elas se inter-relacionam.
Na verdade isso não mudou desde a versão 1.1: A estrutura do
ADO.NET é basicamente a mesma. Porém uma novidade a partir do .NET 2.0 foram
algumas classes denominados DataSource, entre eles o SQLDataSource.
|

|
Estudamos no módulo II a classe SiteMapDataSource
|
As classes DataSource é uma classe que nos permite acessar
diversos bancos de dados relacionais ou não, e que internamente utiliza
diversas objetos do ADO.NET, tornando o seu uso mais simples através de um único
objeto. Por exemplo, para retornar um conjunto de dados de um servidor
SQLServer, por exemplo, você precisar no mínimo de um SQLConnection, um
SQLCommand e um SQLDataReader. Por outro lado você pode obter o mesmo conjunto
de dados utilizando um único SQLDataSource, que internamente fará uso destes
objetos.
|

|
Apesar do SQLDataSource fornecer um modelo simplificado e
mais amigável, você deve conhecer os componentes do ADO.NET, pois a
verdadeira funcionalidade de acesso a dados está nestas classes. ADO.NET será
estudado mais adiante neste capitulo.
|
Para demonstrar como é fácil e rápido criar uma aplicação que
retorne uma tabela de um banco de dados em uma página ASP.NET, vamos demonstrar
passo a passo a criação de uma aplicação utilizando o SQLDataSource.
Uma tabela sem nenhum código
Neste exemplo você verá que é possível retornar um conjunto de
dados sem escrever sequer uma linha de código:
|

|
Nestes exemplos estaremos utilizando o banco de dados
AdventureWorks, que é o banco de dados de demonstração do SQL Server 2005.
Você pode baixar este banco de dados do site oficial do SQL Server e
instalá-lo, inclusive na versão Express. Se preferir você pode praticar com
qualquer outro banco de dados, inclusive da versão 2000.
|
Crie uma nova aplicação ASP.NET;
Da barra de ferramentas Data, arraste um controle SQLDataSorce
para o Web Form Default.aspx;
Na Smart Tag do controle, clique em Configure DataSource;

É exibido um assistente de configuração. Na primeira etapa
você deve informar com qual servidor deseja realizar a conexão. Para isto
clique em New Connection, selecione Microsoft SQL Server em Data Source e .NET FrameWork Data Provider for SQL Server em Data Provider, em seguida clique em continue.

Em seguida é exibida a caixa de dialogo Add Connection, onde
você deve informar as opções de conexão com os servidor:

De volta ao assistente, clique em Next;
Neste passo você deve definr uma clausula Where e / ou OrderBy.
Se você informar que deseja salvar a String de Conexão. Mantenha a opção marcada
com o nome padrão para a string de conexão;
No próximo passo você deve montar a consulta SQL. Informe uma
tabela e as colunas que deseja incluir na consulta. Se incluir a chave primaria
entre as colunas de seus Select, através da opção Advanced poderá ainda solicitar
que sejam criados comandos SQL para inclusão, alteração e exclusão:

A próxima etapa permite que você teste a consulta SQL Criada.
Clique em Finish.
Se você examinar seu arquivo aspx poderá notas que o
assistente configurou diversas propriedades do controle:
|
<asp:SqlDataSource ID="SqlDataSource1"
runat="server" ConnectionString="<%$
ConnectionStrings:AdventureWorksConnectionString %>"
DeleteCommand="DELETE FROM [Department] WHERE [DepartmentID] =
@DepartmentID"
InsertCommand="INSERT INTO [Department] ([Name], [GroupName],
[ModifiedDate]) VALUES (@Name, @GroupName, @ModifiedDate)"
SelectCommand="SELECT * FROM [Department]" UpdateCommand="UPDATE
[Department] SET [Name] = @Name, [GroupName] = @GroupName, [ModifiedDate] =
@ModifiedDate WHERE [DepartmentID] = @DepartmentID">
<DeleteParameters>
<asp:Parameter Name="DepartmentID"
Type="Int16" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Name"
Type="String" />
<asp:Parameter Name="GroupName"
Type="String" />
<asp:Parameter Name="ModifiedDate"
Type="DateTime" />
<asp:Parameter Name="DepartmentID"
Type="Int16" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Name"
Type="String" />
<asp:Parameter Name="GroupName"
Type="String" />
<asp:Parameter Name="ModifiedDate"
Type="DateTime" />
</InsertParameters>
</asp:SqlDataSource>
|
Além dos comandos de seleção, atualização, exclusão e
inclusão, foram criados os parâmetros para a execução destas operações. Isto
foi possível graças a inclusão da chave primária entre os campos a serem
utilizados durante o assistente.
Vamos agora exibir os dados na página:
Adicione um GridView da barra de ferramentas data. Use a opção
Auto Format da Smart Tag do controle para definir um layout para a
tabela.
|

|
O GridView será estudado melhor neste capitulo, por
enquanto ele é um acessório para o estudo do SQLDataSource.
|
Ainda na Smart Tag, selecione SQLDataSource1 na opção
ChoseDataSource.
Marque as opções Enable Paging. Enable
Sorting, Enable Editing, Enable Deleting e Enable Selecion na Smart Tag:

Por fim, adicione a propriedade DataKeyNames, o(s) nome(s)
do(s) campo(s) que compõe a chave primária da tabela.
Rode a aplicação

Parabéns! Você acabou de criar um software para exibir uma
tabela em uma aplicação Web, onde é possível ordenar, paginar, alterar e
excluir registros sem escrever nenhuma única linha de código!!
|

|
Obviamente se a operação de inclusão ou atualização violar
alguma regra de integridade do banco de dados, será gerado um erro.
|
|

|
As operações de atualização e exclusão só ocorrerão de
forma correta desde que você tenha as instruções SQL respectivas configuradas
de forma correta.
|