ASP.NET 2.0 - Apresentando a classe ConfigurationManager
Para aplicações web que acessam banco de dados a string de conexão é fundamental pois contém a informação básica necessária para realizar a conexão com a base de dados. A seguir temos como exemplo duas strings de conexão :
1- String de conexão para banco de dados SQL Server : "Data Source=Macoratti;Initial Catalog=Northwind;User Id=sa;Password=;"
2- String de conexão para o banco de dados Access : "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Macorati.mdb;User Id=admin;Password=;"
Em ASP.NET você pode seguir diversas estratégias para armazenar a string de conexão : usar o arquivo de configuração web.config, usar variáveis de aplicação, arquivos textos e colocar a string de conexão diretamente no seu código. Os desenvolvedores ASP costumavam usar o objeto Application para armazenar a string de conexão, a prática era usar o arquivo global.asa. Abaixo um exemplo:
Sub Application_OnStart
Application("ConexaoBD") = Provider=SQLOLEDB.1;UID=sa;PWD=;Initial
Catalog=Macoratti;Data Source=localhost;"
End Sub
A estrutura básica do arquivo web.config possui um formato idêntico ao
arquivo machine.config. No mínimo o arquivo web.config precisa ter um
elemento <configuration> e um elemento filho como <system.web>.
Desta forma a estrutura mínima do web.config seria:
<?xml
version="1.0"?> <configuration> <system.web> </system.web> </configuration> |
A ASP.NET 2.0 trouxe como novidade a inclusão no arquivo de configuração de um elemento chamado connectionStrings que permite a configuração das strings de conexão.( Agora você não precisa criar chaves na seção appSettings para guardar a string de conexão.)
Podemos usar este novo elemento para armazenar diversas strings de conexão. Abaixo temos um exemplo de utilização do novo elemento para armazenar a string de conexão com uma base de Sql Server.
<?xml version="1.0"
encoding="utf-8" ?> <configuration> <connectionStrings> <add name="MyLocalSQLServer" connectionString="Initial Catalog=Macoratti;data source=localhost;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration> |
Note que no interior do elemento connectionStrings temos um novo elemento Add. O elemento Add inclui a string de conexão e possui os seguintes atributos:
Atributo | Descrição |
name | Permite definir o nome da ConnectionString que deverá ser usada. |
connectionString | Contém o valor da string de conexão para uma base de dados. |
providerName | Define o nome do provedor para acesso ao banco de dados. Se nada for informado o padrão é System.Data.SqlClient |
A classe ConfigurationManager
A classe ConfigurationManager é uma nova classe que permite o acesso de forma programática ao arquivo de configuração e suas seções. Podemos destacar as seguintes funcionalidades desta classe.
A seguir temos os principais métodos e propriedades da classe ConfigurationManager:
Propriedade\Método | Descrição |
AppSettings | Obtêm os dados da seção <appSettings> do arquivo de configuração da aplicação. |
ConnectionStrings | Obtêm os dados da seção <ConnectionStrings> do arquivo de configuração da aplicação. |
OpenExeConfiguration | Abre o arquivo de configuração cliente especificado com um objeto. |
OpenMachineConfiguration | Abre o arquivo de configuração machine especificado com um objeto |
OpenWebConfiguration | Abre o arquivo de configuração da aplicação web especificado com um objeto. |
A seguir vamos mostrar um exemplo onde iremos criar uma página web para exibir os dados da tabela Clientes da base de dados Cadastro.mdf e a seguir exibir a string de conexão usada.
Nota: Para saber como a base de
dados Cadastro.mdf e a tabela Clientes foram criadas acompanhe o artigo:
VB.NET
2005 - Criando Objetos Básicos de dados.
Criando uma aplicação WEB com acesso a dados e obtendo a string de conexão
Você vai precisar ter instalado o Visual Web Developer e o SQL Server 2005 Express para acompanhar esta parte prática.
Abra o VWD e no menu File selecione New Web Site. Informe o nome gdvBasico e escolha a linguagem VB.NET. Será criado um projeto contendo o arquivo default.aspx , o arquivo web.config e a pasta App_Data.
Selecione a página Default.aspx e insira um controle GridView conforme figura abaixo:
A seguir iremos criar uma string de conexão com o banco de dados Cadastro.mdf para exibir os dados da tabela Clientes.
Selecione o GridView e em GridView Tasks selecione <New data source...>
A seguir na janela do assistente
selecione DataBase e clique em OK. Na próxima janela selecione a base de dados e clique no botão (+) para exibir a string de conexão.(Ver figura abaixo) Agora clique em Cancel pois não iremos criar o data source apenas fizemos isto para obter a string de conexão. Deverá ser criada uma string de conexão com o nome de clientesConnectionString
|
|
|
Após definir a string de conexão, se examinar-mos o arquivo web.config iremos notar que a string de conexão foi incluída no arquivo conforme abaixo: (Estou exibindo apenas partes do arquivo web.config.)
<?xml version="1.0"?> ..... <configuration> <appSettings/> <connectionStrings> <add name="clientesConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\_aspn\artigos\App_Data\clientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> .... <authentication mode="Windows"/> </system.web> </configuration> |
Vejamos agora o código do arquivo default.aspx é dado a seguir:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>GridView - Exibindo dados</title> </head> <body> <form id="form1" runat="server"> <div> <center>Exibindo dados de uma fonte de dados no GridView (VB)</center> </div> <asp:GridView ID="gdv" Runat="Server" AutoGenerateColumns="true" BorderColor="#000080" BorderWidth="1px" HorizontalAlign="Center" Width="90%" > </asp:GridView> </form> </body> </html> |
Código do arquivo default.aspx |
A seguir temos o código code-behind do arquivo Default.aspx.vb :
Option Explicit On Option Strict On Imports Microsoft.VisualBasic Imports System.Configuration Imports System.Data Imports System.Data.sqlclient Partial Class _Default Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim dSource As SqlDataSource = Nothing Dim connBuilder As New SqlConnectionStringBuilder If (Not Page.IsPostBack) Then 'configura o data source para obter os dados da base de dados dSource = New SqlDataSource() dSource.ConnectionString = ConfigurationManager.ConnectionStrings("clientesConnectionString").ConnectionString dSource.DataSourceMode = SqlDataSourceMode.DataReader dSource.ProviderName = "System.Data.SqlClient" dSource.SelectCommand = "SELECT * from Clientes" 'define a fonte de dados para ser exibida no controle gridview gdv.DataSource = dSource gdv.DataBind() End If End Sub End Class |
default.aspx.vb |
No código acima estamos obtendo a strind e conexão a partir do arquivo web.config usando a propriedade ConnectionString da classe ConfigurationManager, definindo a instrução SQL que irá selecionar os dados da tabela Clientes e vinculando o DataReader ao DataGridView
Executando o projeto iremos obter a página abaixo exibindo os dados da tabela Clientes.
Vamos criar um link na página Default.aspx de forma a permite que o cliente obtenha a string de conexão usada pela aplicação. A idéia é que quando o cliente clicar no link iremos invocar a página verConexao.aspx que obtém a string de conexão no arquivo web.config e a exiba na página.
No menu File selecione a opção New File e na janela New File selecione Web Form e a seguir altere o nome do arquivo para verConexao.aspx. A seguir inclua um controle Label na página verConexao.aspx.
Inclua agora o código abaixo no arquivo verConexao.aspx:
<%@ Page Language="VB" %> <%@ Import Namespace="System.Configuration" %> <%@ Import Namespace="System.Web.Configuration" %> <script runat="server" language="VB" > Public Sub Page_Load(ByVal source As Object, ByVal e As EventArgs) Label1.Text = "String de conexao:" + vbCrLf + ConfigurationManager.ConnectionStrings("clientesConnectionString").ConnectionString End Sub </script> <html> <head> <title>Obtendo a string de conexão</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Label" BackColor="#FFFF80" BorderColor="#FFC0C0"></asp:Label></div> </form> </body> </html> |
Arquivo verConexao.aspx que obtém a string de conexão usada pela aplicação. |
No código acima estamos usando a propriedade ConnectionString da classe ConfigurationManager para obter a string de conexão e exibir na Label da página.
Abaixo temos a página principal com o link , e a seguir , após o usuário clicar no link a página exibindo a string de conexão:
A página principal com o link para a página verConexao.aspx |
A página verConexao.aspx exibindo a string de conexão usada. |
Neste artigo você aprendeu a exibir dados em um GridView, criar uma string de conexão no arquivo web.config e a obter a string de conexão criada via código usando a classe ConfigurationManager.
Até o próximo artigo ASP.NET...
José Carlos Macoratti