ASP.Net e Banco de Dados

Conseitos basicos para quem quer iniciar na aplicaçoes comerciais em ASP.NET este arqtigo vai mostrar bem superficialmente como iniciar o trabalho com banco de dados.

Introdução

 

Conceitos Iniciais:

 

Campo – Um campo é uma informação acerca de algo ou de alguém. O nome de uma pessoa, o código de um produto, o número de uma cédula de identidade são exemplos de campos.

 

Registro – Registro é um conjunto de campos pertencentes, ou de alguma forma ligado, ao mesmo algo ou ao mesmo alguém.  Uma cédula de identidade, a página de uma agenda pessoal; são bons exemplos de registros.

 

O aspecto visual de um registro pode ser entendido como um retângulo horizontal subdividido por campos.

 

 

 

 

Exemplo: Registro que contém as informações básicas de uma pessoa.

 

 


Tabela – Uma tabela é um conjunto de registros semelhantes, de mesma natureza (registros com os mesmos campos). Uma agenda telefônica é um bom exemplo de tabela.

 

O aspecto visual da tabela é disposto da seguinte maneira: Toda tabela tem um registro vazio no início e outro no fim. Estes registros são chamados de BOF e EOF respectivamente.

 

BOF

Campo1

Campo2

...

Campo(N)

 

 

...

Registros Válidos

 

 

...

 

 

 

...

 

 

 

...

 

 

 

...

 

EOF

 

Banco de Dados – Simplificando bem a definição, podemos dizer que Banco de Dados é um conjunto de tabelas relacionadas entre si, ou seja, é um conjunto de tabelas, parte de um mesmo sistema.  Todas as agendas que compõem o material de trabalho de uma secretária forma o seu banco de dados (Agenda de telefones, compromissos, reuniões, etc). 

 

Os bancos são representados por cilindros, devido a sua finalidade se assemelhar bastante a de um disco rígido.


Aplicativos de Banco de Dados

 

São ferramentas que criam, manipulam e administram banco de dados. Estas ferramentas são geralmente classificadas por porte, que considera a capacidade de armazenamento, e o total de acesso em rede.

 

Exemplos de Pequeno Porte: Access, Dbase, Paradox, Approach, etc.

Exemplos de Grande Porte: Interbase, Oracle, SQL Server, Informix, DB2, Ingless 2, etc.

 

Front-end e Back-end

 

É uma metodologia de programação com banco de dados em duas camadas onde o banco (back-end) é produzido e mantido por uma ferramenta específica de banco, e o aplicativo que manipula o banco e promove uma interface amigável com o usuário é feito por uma linguagem de programação. Em aplicativos comerciais simples essa metodologia se tornou famosa com a dobradinha Clipper e Dbase.

 

 

 

É fácil perceber que para o funcionamento desta metodologia é necessário que haja uma comunicação entre o banco e o aplicativo. Essa comunicação é feita por dispositivos de sistema conhecidos como drivers.

 

A indústria de software não perdeu tempo em produzir seus drivers. Existem hoje diversos pacotes com drivers que acessam os mais diferentes bancos de dados.  O mais famoso e, possivelmente o mais antigo é o pacote ODBC. Temos também os pacotes ADO, ADO.NET, JET, BDE, JDBC e outros. 

 

A técnica de utilização do driver é feita pela linguagem, e a nível prático é um processo bastante simples:

 

Cria-se um objeto que fará comunicação com o banco utilizando um driver específico;

 

Cria-se um objeto que funciona como “transporte de rotinas de bancos” (os bancos na sua imensa maioria utilizam uma linguagem padrão de manipulação chamada SQL).

 

Em caso de pesquisa é criado um objeto específico para ser um container de dados. Em outras palavras é criada na linguagem uma pseudo tabela.

 


Banco de Dados com ASP.NET

 

O Asp.Net, utilizando a nova padronização do C# para conexão de banco de dados, trabalha basicamente com dois grupos de controles. Um grupo específico para o banco SQL Server e um outro grupo para o padrão OLEDB (padrão ADO.NET). Enquanto o primeiro é específico para um único banco (o SQL Server), o outro pode ser utilizado para fazer conexões com os mais diversos bancos de dados do mercado, inclusive o próprio SQL Server.  Utilizaremos o padrão OleDb para acessar o MS Access.

 

Como vimos anteriormente, trabalhar com banco de dados é basicamente interligar de duas camadas (Back-end e Front-end).   Os objetos necessários para tal processo são: OleDbConnection, OleDbDataAdapter e DataSet.

 

OleDbConnection -Se alia ao driver especificado e realiza uma conexão com obanco.

OleDbDataAdapter  -  Cria o objeto de transporte para as rotinas especificas do banco.

DataSet  -  Este será o nosso container dados (pseudo tabela).

 

 

 

Não podemos esquecer, que cada elemento de acesso ao banco são objetos criados a partir de suas respectivas classes. Portanto, quando fazemos a utilização temos que ter em mente que o primeiro passo é sempre criar os objetos necessários. É lógico que os objetos de Banco pertencem a um pacote específico que deve ser declarado antecipadamente. No caso do OleDb o pacote é System.Data.OleDb.

 

Vejamos a parte prática de acesso à banco no ASPNET:

 

1º Passo: Crie um objeto do tipo OleDbConnection.

2º Passo: Crie o objeto OleDbAdapter para impor a rotina ao banco (não esqueça que a rotina é feita basicamente em comandos da linguagem SQL).

3º Passo: Se houver necessidade utilize o objeto DataSet como container de dados.

 

Um exemplo seria:

 

OleDbConnection  con  =  new OleDbConnection (“Especificação do banco e o driver utilizado”);

OleDbDataAdapter ad =  new OleDbDataAdapter(“rotina SQL”, con);

DataSet ds = new DataSet();

ad.Fill(ds);   //está rotina coloca os dados obtidos pela rotina dentro do DataSet que é na verdade uma pseudo tabela

 

É claro que para exibir as informações para o usuário final é necessário utilizar um controle Html ou ASPNET.

Os controles ASP.NET possuem uma propriedade DataSource que recebe especificamente a fonte de dados criada (neste caso o Dataset montado pelo OleDbDataAdapter).   Existe uma diferença em receber os dados e mostrá-los. Ao associar o DataSource o objeto apenas recebeu, porém ainda não exibiu. O processo de exibir os dados é feito pelo método DataBind().

Vejamos um exemplo mais prático:

 

Levaremos em consideração uma tabela de nome tabcarros e com os campos sendo placa chave primária, marca tipo texto, modelo tipo texto.

 

Consultar:

 

<%@ Page Language="C#"  %>

<%@ import Namespace="System.Data" %>

<%@ import Namespace="System.Data.OleDb" %>

<script runat="server">

 

void Page_Load(object sender, EventArgs e) {

 

//definir a string SQL

string sql = "SELECT * FROM tabcarros";

 

// definir  conexão

OleDbConnection  con  =  new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\administrador\\Desktop\\1 aula c#\\Carros.mdb;Persist Security Info=False");

 

//abrir a conexão

con.Open();

 

//criar o data DataAdapter e executar a consulta

OleDbDataAdapter ad =  new OleDbDataAdapter(sql,con);

 

//criar o DataSet

DataSet ds = new DataSet();

 

//Preencher o dataset com o data DataAdapter

ad.Fill(ds);

 

//DataView dv = new DataView(ds.Tables[0]);

//ligando dataset ao controle asp.net

DataGrid1.DataSource= ds.Tables[0];//dv;

// visualizando dados no controle

DataGrid1.DataBind();

 

//liberando objetos

con.Dispose();

ad.Dispose();

ds.Dispose();

 

 

 

}

 

 

</script>

<html>

<head>

</head>

<body>

<form runat="server">

<asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid>

</form>

</body>

</html>

 

Inserir:

 

<%@ import Namespace="System.Data" %>

<%@ import Namespace="System.Data.OleDb" %>

<script runat="server">

 

void Button1_Click(object sender, EventArgs e) {

 

string placa = TextBox1.Text;

string marca = TextBox2.Text;

string modelo= TextBox3.Text;

 

 

string sql = "Insert into tabcarros (placa,marca,modelo) Values ("+ placa  +" ," +  marca + "," + modelo + " )";

string conx= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\administrador\\Desktop\\1 aula c#\\Carros.mdb;Persist Security Info=False";

 

OleDbConnection  con  =  new OleDbConnection (conx);

con.Open();

OleDbDataAdapter ad =  new OleDbDataAdapter(sql,con);

DataSet ds = new DataSet();

ad.Fill(ds);

 

 

con.Dispose();

ad.Dispose();

ds.Dispose();

}

 

</script>

<html>

<head>

</head>

<body>

<form runat="server">

<p>

<strong>Produtos</strong>

</p>

<p>

placa&nbsp;:<asp:TextBox id="TextBox1" runat="server" Width="227px"></asp:TextBox>

</p>

<p>

marca<asp:TextBox id="TextBox2" runat="server" Width="232px"></asp:TextBox>

</p>

<p>

modelo:<asp:TextBox id="TextBox3" runat="server" Width="225px"></asp:TextBox>

</p>

<p>

<asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Enviar"></asp:Button>

</p>

<!-- Insert content here -->

</form>

</body>

</html>

 

Excluir:

 

<%@ Page Language="C#" %>

<%@ import Namespace="System.Data" %>

<%@ import Namespace="System.Data.OleDb" %>

<script runat="server">

 

// Insert page code here

void Button1_Click(object sender, EventArgs e) {

string placa = TextBox1.Text;

string sql = "delete from tabcarros where placa="+ placa  +"";

OleDbConnection  con  =  new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\administrador\\Desktop\\1 aula c#\\Carros.mdb;Persist Security Info=False");

con.Open();

OleDbDataAdapter ad =  new OleDbDataAdapter(sql,con);

DataSet ds = new DataSet();

ad.Fill(ds);

con.Dispose();

ad.Dispose();

ds.Dispose();

}

 

</script>

<html>

<head>

</head>

<body>

<form runat="server">

&nbsp;placa &gt;&gt;&gt;&gt;&gt;<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>

<asp:Button id="Button1" onclick="Button1_Click" runat="server" Width="77px" Text="deletar"></asp:Button>

<!-- Insert content here -->

</form>

</body>

</html>

 

Alterar:

 

<%@ Page Language="C#" Debug="True" %>

<%@ import Namespace="System.Data" %>

<%@ import Namespace="System.Data.OleDb" %>

<script runat="server">

 

void Page_Load(object sender, EventArgs e) {

string sql = "SELECT * FROM tabcarros";

OleDbConnection  con  =  new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\administrador\\Desktop\\1 aula c#\\Carros.mdb;Persist Security Info=False");

con.Open();

OleDbDataAdapter ad =  new OleDbDataAdapter(sql,con);

DataSet ds = new DataSet();

ad.Fill(ds);

DataGrid1.DataSource= ds.Tables[0];

DataGrid1.DataBind();

con.Dispose();

ad.Dispose();

ds.Dispose();

}

void Button1_Click(object sender, EventArgs e) {

string placa = TextBox1.Text;

string marca = TextBox2.Text;

string modelo= TextBox3.Text;

string sql = "update tabCarros set marca=" + marca + ", modelo=" + modelo + " where placa=" + placa + "";

OleDbConnection  con  =  new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\administrador\\Desktop\\1 aula c#\\Carros.mdb;Persist Security Info=False");

con.Open();

OleDbDataAdapter ad =  new OleDbDataAdapter(sql,con);

DataSet ds = new DataSet();

ad.Fill(ds);

   con.Dispose();

ad.Dispose();

ds.Dispose();

}

void Button2_Click(object sender, EventArgs e) {

}

 

</script>

<html>

<head>

</head>

<body>

<form runat="server">

placa&nbsp;:<asp:TextBox id="TextBox1" runat="server" Width="155px"></asp:TextBox>

<p>

marca<asp:TextBox id="TextBox2" runat="server" Width="157px"></asp:TextBox>

</p>

<p>

modelo:<asp:TextBox id="TextBox3" runat="server" Width="147px"></asp:TextBox>

<asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid>

</p>

<p>

<asp:Button id="Button1" onclick="Button1_Click" runat="server" Width="84px" Text="aterar"></asp:Button>

<asp:Button id="Button2" onclick="Button2_Click" runat="server" Width="84px" Text="visualizar"></asp:Button>

</p>

</form>

</body>

</html>

 

Exercício:

Montar uma aplicação que insira, exclua, altere, visualize.

O Objeto DataView

 

Ele faz ponte entre o objeto DataSet e uma aplicação onde serão exibidos os dados.

 

Visão geral do processo:

 

 

 

 

Ex01

<%@ Page Language="C#" Debug="True" %>

<%@ import Namespace="System.Data" %>

<%@ import Namespace="System.Data.OleDb" %>

<script runat="server">

 

// Insert page code here

//

 

void Page_Load(object sender, EventArgs e) {

 

//definir a string SQL

string sql = "SELECT * FROM tabcarros";

 

// definir  conexão

OleDbConnection  con  =  new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\administrador\\Desktop\\1 aula c#\\Carros.mdb;Persist Security Info=False");

 

//abrir a conexão

con.Open();

 

//criar o data adapter e executar a consulta

OleDbDataAdapter ad =  new OleDbDataAdapter(sql,con);

 

//criar o DataSet

DataSet ds = new DataSet();

 

//Preencher o dataset coom o data adapter

ad.Fill(ds);

 

//ligando dataset ao DataView

DataView dv = new DataView(ds.Tables[0]);

 

string sele = Classificar.SelectedItem.Value;

 

switch (sele)

{

//Sort é a propriedade do DataView que retorna ou define informações sobre

// colunas e ordem dos dados

case "placa":

{

if (Crescente.Checked)

dv.Sort=  "placa ASC";

else

dv.Sort=  "placa DESC";

 

break;

}

case "marca":

{

if (Crescente.Checked)

dv.Sort=  "marca ASC";

else

dv.Sort=  "marca DESC";

 

break;

}

  case "modelo":

{

if (Crescente.Checked)

dv.Sort=  "modelo ASC";

else

dv.Sort=  "modelo DESC";

 

break;

 

   }

 

}

 

//  Count retorna o numero de registros de um DataView

Label1.Text= "N°:";

int numregistro = dv.Count;

Label1.Text += numregistro.ToString() ;

 

//ligando DataView ao controle asp.net

DataGrid1.DataSource= dv;

 

// visualizando dados no controle

DataGrid1.DataBind();

 

//liberando objetos

con.Dispose();

ad.Dispose();

ds.Dispose();

 

 

 

 }

 

</script>

<html>

<head>

</head>

<body>

<form runat="server">

<p>

&nbsp;<asp:DataGrid id="DataGrid1" runat="server" BackColor="Silver" BorderColor="Black" ShowFooter="True">

<HeaderStyle border backcolor="#404040"></HeaderStyle>

</asp:DataGrid>

<asp:ListBox id="Classificar" runat="server" Width="100px" Rows="1">

<asp:ListItem Value="placa" Selected="True">placa</asp:ListItem>

<asp:ListItem Value="marca">marca</asp:ListItem>

<asp:ListItem Value="modelo">modelo</asp:ListItem>

</asp:ListBox>

<asp:Button id="Button1" runat="server" Text="classificar"></asp:Button>

</p>

<p>

<asp:RadioButton id="Crescente" runat="server" Text="Crescente" GroupName="x"></asp:RadioButton>

<asp:RadioButton id="Decrescente" runat="server" Text="Decrescente" GroupName="x"></asp:RadioButton>

<asp:Label id="Label1" runat="server"></asp:Label>

</p>

</form>

</body>

</html>

                                                                                                         

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados