Você está na página 1de 2

Acesso à Dados com ASP.NET – Parte 2 - C# Brasil http://csharpbrasil.com.

br/acesso-a-dados-com-asp-net-parte-2/

Acesso à Dados com ASP.NET – Parte 2


Publicado 1 de julho de 2011 | Por Wellington Camargo | Nenhum comentário

Continuando os artigos sobre acesso à dados, neste publico a 2ª parte do artigo que nos mostra como acessar e
implementar, de forma simples, um banco de dados do SQL Server 2005 por meio de uma aplicação ASP.NET com
Visual Studio 2008. Para acessar a parte 1, clique aqui.

Note que, depois que é criada a aplicação, é criado na Solution Explorer uma pasta chamada App_Data. Ela é
responsável por armazenar os arquivos relacionados à dados, como arquivos do SQL Server, Access, etc.

Clique com o botão direito nela e clique em Add New Item. Na janela que aparece, escolha o template SQL Server
Database, deixe como Database.mdf ou renomeie se quiser e clique em Add, como mostra a imagem abaixo:

Como a imagem acima mostrou, o novo banco de dados foi criado no Server Explorer e inserido na pasta App_Data. Este
procedimento facilita a distribuição da aplicação, pois desta forma não precisamos configurar o servidor de dados.

Apague este database pois utilizaremos o Northwind, criado no artigo anterior.

Data Provider – o Data Provider nada mais é do que um conjunto de classes que conectam o banco de dados à uma
aplicação. Os Data Providers nativos são:

Sql Server Data Provider – fornece acesso ao banco SQL Server. As classes contidas no provider estão disponíveis no
namespace System.Data.SqlClient.

Oracle Data Provider – fornece acesso ao banco Oracle. As classes contidas no provider estão disponíveis no
namespace System.Data.OracleClient.

OLE DB Data Provider – fornece acesso à dados OLE DB e as versões SQL anteriores à versão 7. As classes contidas
no provider estão disponíveis no namespace System.Data.OleDb.

ODBC Data Provider – fornece acesso à dados que aceitam o padrão ODBC, um provider muito antigo e pouco usado
atualmente. As classes contidas neste provider estão disponíveis no namespace System.Data.Odbc.

Em nosso exemplo usaremos o SQL Server Data Provider.

Os quatro tipos de objetos principais dos Data Providers são:

Connection – como o próprio nome diz, ele é responsável por criar a conexão com o banco de dados.

Command – executa comando(s) na base de dados.

DataAdapter – funciona como uma ligação entre a fonte de dados e o Dataset.

DataReader – fornece acesso à dados somente leitura, onde ele percorre os dados e os devolve lidos para o uso na
aplicação.

Estes são os objetos disponibilizados por cada Data Provider. O que muda entre eles são os nomes das classes que
implementam cada objeto e o tipo da implementação feita. No SQL Server Data Provider por exemplo o objeto
Connection citado acima é implementado na classe SqlConnection.

Modelo Conectado – iremos usar o modelo conectado para acessar os dados do banco Northwind, executar um
comando que retorne o conteúdo da tabela Customers e exibir os registros retornados em um DropDownList em nossa
Default.aspx.

Começando, abra a Default.aspx no modo Designer, clique na aba Toolbox (CTRL+ALT+X), clique e arraste o controle
DropDownList para a página, clique na aba Propriedades (F4) e mude o ID para ddlCustomers, como mostra a figura
abaixo:

Dê dois cliques em uma parte branca desta página ou aperte F7 para ir na página de códigos, Default.aspx.cs. Nela,
declare o namespace System.Data.SqlClient. No evento Page_Load, insira o código a seguir e veja a explicação do
mesmo logo abaixo:

01 protected void Page_Load(object sender, EventArgs e)


02
03 {
04
05 //Entra nos códigos abaixo se não for feita requisição na página
06
07 if (!Page.IsPostBack)
08
09 {
10
11 //Cria a conexão com o banco
12
13 SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial
Catalog=Northwind; Integrated Security=true");
14
15 //Passa as instruções SQL por meio do SqlCommand
16
17 SqlCommand cmd = new SqlCommand("SELECT CustomerID, CompanyName FROM Customers ORDER BY
CompanyName", conn);
18
19 //Cria um DataReader quer irá ler os dados
20
21 SqlDataReader dr;
22
23 //Abre a conexão
24
25 conn.Open();
26
27 //Executamos o comando e o associamos ao DataReader
28
29 dr = cmd.ExecuteReader();
30
31 //Configuramos o DropDownList
32
33 this.ddlClientes.DataSource = dr;
34
35 this.ddlClientes.DataValueField = "CustomerID";
36
37 this.ddlClientes.DataTextField = "CompanyName";
38
39 //Preenchemos o DropDownList
40
41 ddlClientes.DataBind();
42
43 //Fecha o DataReader
44
1 de 2 23/10/2015 11:54
Acesso à Dados com ASP.NET – Parte 2 - C# Brasil http://csharpbrasil.com.br/acesso-a-dados-com-asp-net-parte-2/

40
41 ddlClientes.DataBind();
42
43 //Fecha o DataReader
44
45 dr.Close();
46
47 //Fecha a conexão
48
49 conn.Close();
50
51 }
52 }

No código acima, instanciamos um objeto do tipo SqlConnection, passando como parâmetro a string de conexão com o
banco de dados. String de conexão é um conjunto de propriedades e seus respectivos valores, necessária para se
estabelecer uma conexão com uma base de dados.

Neste exemplo usamos três propriedades da string de conexão:

Data Source – indica o servidor para o qual a aplicação deve se conectar.

Initial Catalog – é o nome do banco de dados que iremos nos conectar.

Integrated Security – é a autenticação integrada do Windows para se conectar ao servidor. Considerada a mais
segura, pois não é preciso passar usuário e senha para se conectar ao servidor.

Seguindo o código definimos um objeto SqlCommand com as cláusula Select que retorna os campos CustomerID e
CompanyName da tabela Customers, ordenados por CompanyName e o associamos ao objeto de conexão
instanciado anteriormente.

Logo depois, declaramos um objeto do tipo SqlDataReader e abrimos a conexão com o banco através do uso do
método Open() do objeto de conexão.

Pelo método ExecuteReader() do SqlCommand, o comando é executado e associamos seu retorno ao objeto
SqlDataReader criado anteriormente. O DataReader, como dito anteriormente, retorna dados somente leitura e de
acesso seqüencial, por isso é indicado quando queremos retornar dados apenas para consulta, que não irão sofrer
alguma alteração. Devido à isso, o uso do DataReader aumenta a performance da aplicação.

Além do método ExecuteReader(), o objeto SqlCommand tem outros métodos, entre eles:

ExecuteNonQuery() – executa uma instrução que não retorna dados, por exemplo um INSERT ou UPDATE.

ExecuteScalar() – usada quando a consulta retorna uma única linha com uma única coluna.

Agora configuramos o DropDownList ddlClientes para usar o DataReader dr como fonte de dados. Fazemos isso usando
a propriedade DataSource. Usamos também a propriedade DataValueField para obter o seu conteúdo do campo
CustomerID e a propriedade DataTextField para obter seu valor do campo CustomerName.

DataTextField se refere ao campo usado para obter o texto a ser mostrado na página .aspx. Já a propriedade
DataValueField é usada para associar o valor de cada item do DropDownList ao seu respectivo texto. Assim podemos
apresentar um texto mais amigável ao usuário e associado a um valor, como um código ou a chave primária de uma
tabela, que faça mais sentido para a aplicação.

Finalizando o código, o método DataBind é responsável por preencher nosso DropDownList com os valores retornados
pelo DataReader quando chamado.

Se você fez como o descrito neste artigo, compile sua página, apertando a tecla F5. Irá aparecer uma mensagem em sua
tela se esta é a primeira vez que o projeto é compilado, pedindo para modificar o arquivo web.config para permitir a
compilação. Clique em Sim e aguarde.

Se tudo deu certo, seu navegador deve exibir algo parecido com a imagem abaixo:

Quando usamos o DataReader para obter os dados, estamos usando o modelo conectado de acesso a dados. Tem
esse nome porque é necessário manter uma conexão com o banco de dados aberta enquanto os registros retornados
pela consulta forem manipulados. No exemplo acima, a conexão só é fechada após os dados retornados pelo DataReader
serem vinculados ao nosso DropDownList, este processo recebe o nome de DataBinding.

Fechamos aqui a Parte 2 de nossa série de Acesso a Dados com ASP.NET. Na próxima parte iremos criar um
exemplo de modelo desconectado de acesso à dados e mais adiante falaremos sobre DataSet Tipado e
TableAdapter.

Quaisquer dúvidas, estou à disposição

Até o próximo artigo!

2 de 2 23/10/2015 11:54

Você também pode gostar