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.

 

 

img1.GIF

 

 

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

 

 img2.GIF


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.

 

img3.GIF

 

 

É 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 o                                          banco.

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

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

 

 

img4.GIF

 

            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:

 

 

 img5.GIF

 

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>