Neste artigo, construiremos algumas aplicações em ASP.NET que farão uso efetivo de stored procedures, de forma a comprovar o aumento de escalabilidade. De praxe, você aprenderá como a IDE do Visual Studio .NET pode nos ajudar nesse processo, criando automaticamente as procedures no SQL Server a partir de assistentes do SqlDataAdapter.
Criando a aplicação
Para este exemplo, vamos utilizar o banco de dados de demonstração chamado Northwind, que é distribuído com o SQL Server. Construiremos um pequeno formulário em ASP.NET que permitirá a inclusão de informações na tabela Products (produtos). Não vamos nos preocupar por enquanto com as demais operações (exclusão e alteração), que são semelhantes e podem ser feitas com base nos códigos utilizados para a inserção.
No Visual Studio .NET 2003, clique em File>New>Project e na seção Visual C# Projects escolha ASP.NET Web Application. Dê o nome de TesteSP para a aplicação, conforme mostra a Figura
Figura 1. Criando a aplicação ASP.NET no Visual Studio .NET.
Configurando o formulário principal
No Web Form, a partir da Toolbox, vamos colocar alguns TextBoxes para a entrada de dados. Para facilitar, vamos utilizar somente os campos principais da tabela (ProductName, CategoryID e UnitPrice). Caso queira usar os demais, fique a vontade, basta colocar mais controles. Os nomes (propriedade ID) dos TextBoxes devem ficar como tbProductName, tbCategoryID e tbUnitPrice, respectivamente. Coloque alguns Labels e configure o Text para indicar o que deve ser preenchido. Um Button com o Text “Incluir Produto” será usado para incluir as informações no banco de dados. Utilize a Figura 2 como base para configurar seu formulário.
Figura 2. Formulário principal da aplicação com TextBoxes.
Configurando a conexão
A partir de agora vamos começar a construir a conexão com o banco de dados. Seria interessante criar uma nova classe para abstrair a comunicação com o banco de dados, e utilizar interfaces (um princípio básico e poderoso da POO) para tornar esse processo transparente para a interface de usuário. Para facilitar, vamos configurar os objetos ADO.NET no próprio WebForm. Em uma oportunidade futura mostrarei como criar classes de negócio para abstrair a manipulação de dados.
O primeiro passo é colocar um SqlDataAdapter a partir da Toolbox. Será mostrado um assistente, que auxiliará na configuração das várias opções do componente. Clique em Next e na tela que aparece clique no botão New Connection. Preencha as informações de conexão conforme mostrado na Figura 3, informando o nome do servidor SQL, usuário/senha e banco de dados. Clique em Testar conexão para ver se tudo está funcionando corretamente. A seguir clique em OK e de volta ao assistente clique em Next.
Figura 3. Configurando a conexão.
Escolhendo o tipo de consulta
A próxima tela é muito importante no processo de configuração do SqlDataAdapter. É nesse momento que devemos informar ao VS.NET como o componente acessará o banco de dados: usando comandos SQL padrão (select, update, delete e insert) ou através de stored procedures. Como ainda não criamos as procedures no banco de dados, vamos pedir que o VS.NET faça isso automaticamente para nós, marcando a opção Create new stored procedures (Figura 4). Caso queira utilizar existentes, marque a última opção. A seguir, clique em Next.
Figura 4. Criando stored procedures a partir da própria IDE.
Configurando a consulta com o Query Builder
Na próxima tela, devemos configurar a consulta que será utilizada pelo SqlDataAdapter para obter os dados do SQL Server. Para auxiliar na criação da consulta, podemos usar a opção Query Builder, que abrirá um editor visual.
Na janela Add Table, dê um duplo clique em Products e a seguir clique
No Query Builder, marque os campos ProductID, ProductName, CategoryID, UnitPrice (os demais não serão usados neste exemplo). Observe que o comando select vai sendo gerado automaticamente pela IDE (Figura 5). Com base no select, a IDE vai gerar a seguir os códigos das procedures.
Nesse mesmo editor, podemos facilmente especificar o critério de seleção dos dados (where), ordenação (order by) e até mesmo realizar Joins entre tabelas, tudo visualmente. A IDE se encarrega de gerar o comando SQL automaticamente. Se existirem foreign keys entre colunas das tabelas adicionadas, o VS.NET é capaz de criar o Join automaticamente. Clique em Ok para confirmar e a seguir em Next.