HTML, JavaScript, PHP, ASP, .Net, C#, MySQL, Ms. SQL ...

SQL no asp.net

Conectando uma página aspx ao SQL Server

c sharp datareader dataset datatable sql

Há diversas maneiras para uma aplicação em ASP.Net C# conectar a um banco de dados. Dentre elas, existem o DataSet, DataTable e o DataReader.

Vou disponibilizar apenas os códigos. Quanto a diferença entre DataSet, DataTable e DataReader, consultem o Google! Em um outro dia, outra hora explico a diferença...

 

 

SQL de exemplo

CREATE DATABASE TESTE
GO
USE TESTE
  
CREATE TABLE TB_CATEGORIAS
(
ID INT IDENTITY PRIMARY KEY,
NOME VARCHAR(30)
)
SET IDENTITY_INSERT TB_CATEGORIAS ON
INSERT INTO TB_CATEGORIAS (ID, NOME) VALUES (1,'Bebidas')
INSERT INTO TB_CATEGORIAS (ID, NOME) VALUES (2,'Carnes')
INSERT INTO TB_CATEGORIAS (ID, NOME) VALUES (3,'Condimentos')
INSERT INTO TB_CATEGORIAS (ID, NOME) VALUES (4,'Frutas/Verduras')
SET IDENTITY_INSERT TB_CATEGORIAS OFF
SELECT * FROM TB_CATEGORIAS


CREATE TABLE TB_PRODUTOS
(
ID INT IDENTITY PRIMARY KEY,
ID_CATEGORIA INT FOREIGN KEY REFERENCES TB_CATEGORIAS(ID),
NOME VARCHAR(30)
)
SET IDENTITY_INSERT TB_PRODUTOS ON
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(1, 1, 'Coca-cola')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(2, 1, 'Pepsi')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(3, 1, 'Brahma')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(4, 1, 'Devassa')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(5, 1, 'Skol')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(6, 1, 'Kaiser')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(7, 2, 'Contra filé')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(8, 2, 'Alcatra')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(9, 2, 'Coxão mole')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(10, 2, 'Coxão duro')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(11, 2, 'Patinho')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(12, 2, 'Lagarto')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(13, 3, 'Sal')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(14, 3, 'Pimenta do reino')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(15, 3, 'Alecrim')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(16, 3, 'Raiz-forte')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(17, 3, 'Azeite')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(18, 4, 'Maçã')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(19, 4, 'Pêra')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(20, 4, 'Abacaxi')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(21, 4, 'Tomate')
INSERT INTO TB_PRODUTOS (ID, ID_CATEGORIA, NOME) VALUES(22, 4, 'Batata')
SET IDENTITY_INSERT TB_PRODUTOS OFF
SELECT * FROM TB_PRODUTOS

 

Web.Config

<?xml version="1.0"?>
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0"/>
    </system.web>
  <connectionStrings>
    <add connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TESTE;Data Source=localhost\SQLEXPRESS;" name="MsSQL" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

Namespace db (App_Code/database.cs)

using System.Data;
using System.Data.SqlClient;

namespace db
{
    public class Sql
    {

        public static DataSet getDataSet(string strSQL)
        {
            DataSet ds = new DataSet();
            SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MsSQL"].ConnectionString);
            cn.Open();
            SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
            ds.Tables.Add();     
            ds.EnforceConstraints = false;          // Desabilita restrições SQL constraints, deixando o DataSet mais rápido (+/- engine MyIsam do MySQL)
            ds.Tables[0].BeginLoadData(); // Trata todas as colunas sem diferença, sem PK, sem FK...
            da.Fill(ds.Tables[0]);
            cn.Close();
            return ds;
            cn = null;
        }
        
        public static DataTable getDataTable(string strSQL)
        {
            SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MsSQL"].ConnectionString);
            SqlCommand cmd = new SqlCommand(strSQL, cn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            da = null;
            cn.Close();
            cn = null;
            return dt;
     
        }

        public static SqlDataReader getDataReader(string strSQL)
        {
            SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MsSQL"].ConnectionString);
            
                cn.Open();
                SqlCommand cmd = new SqlCommand(strSQL, cn);
                SqlDataReader dr = cmd.ExecuteReader();
                return dr;
                cn.Close();
                cn = null;
        }

    }
}

 

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  %>

<!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></title>
</head>


<body runat="server">
    <form  runat="server">

    <h1>Banco de dados</h1>
    
    <h2>asp:DropDownList</h2>
    <p>Utilizando DataSet</p>
    <p><asp:DropDownList ID="DropDownDS" runat="server"></asp:DropDownList></p>
    <br />
    <p>Utilizando DataTable</p>
    <p><asp:DropDownList ID="DropDownDT" runat="server"></asp:DropDownList></p>
    <br />
    <p>Utilizando DataReader</p>
    <p><asp:DropDownList ID="DropDownDR" runat="server"></asp:DropDownList></p>   
    <hr />

    <h2>asp:TextBox</h2>
    <p>Utilizando DataReader</p>
    <p><asp:TextBox ID="TextBoxDR" runat="server" Height="174px" TextMode="MultiLine" Width="248px"></asp:TextBox></p>
    
    <hr />

    
    <h2>asp:DataGrid</h2>
    <p>Utilizando DataTable</p>
    <div><asp:DataGrid id="DataGridDT" runat="server"></asp:DataGrid></div>
 
    <hr />

    <h2>asp:DataList</h2>
    <p>Utilizando DataTable</p>
    <asp:DataList ID="DataListDT" runat="server" border="1"  CellPadding="3" CellSpacing="0" RepeatColumns="5" RepeatDirection="Horizontal">   
        <ItemTemplate>
            <p class="pequeno"><span class="label">Categoria:</span> <span class="value"> <span class="pequeno cinza"><%# DataBinder.Eval(Container.DataItem, "ID")%></span> <%# DataBinder.Eval(Container.DataItem, "NOME") %></span></p>
            <p class="label">Produto:</p>
            <p class="value"><%# DataBinder.Eval(Container.DataItem, "ID_PRODUTO") %> <%# DataBinder.Eval(Container.DataItem, "NOME_PRODUTO") %></p>
        </ItemTemplate>
    </asp:DataList>

    <p>Utilizando DataReader</p>
    <asp:DataList ID="DataListDR" runat="server" border="1"  CellPadding="3" CellSpacing="0">   
        <ItemTemplate>
            <p><span class="label"><%# DataBinder.Eval(Container.DataItem, "ID")%> </span> <span class="value"><%# DataBinder.Eval(Container.DataItem, "NOME") %></span></p>
      
        </ItemTemplate>
    </asp:DataList>
    
    <hr />
    <h2>asp:Repeater</h2>
    <p>Utilizando DataTable</p>
    <ul><asp:Repeater ID="RepeaterDT" runat="server">
        <ItemTemplate>
            <li><%# DataBinder.Eval(Container.DataItem, "NOME")%></li>
        </ItemTemplate>
    </asp:Repeater></ul>

    <p>Utilizando DataReader (modo1)</p>
    <ul><asp:Repeater ID="RepeaterDR1" runat="server">
        <ItemTemplate>
            <li><%# DataBinder.Eval(Container.DataItem, "NOME")%></li>
        </ItemTemplate>
    </asp:Repeater></ul>

<p>Utilizando DataReader (modo2)</p>
    <ul><asp:Repeater ID="RepeaterDR2" runat="server">
        <ItemTemplate>
            <li class="li0"><%# DataBinder.Eval(Container.DataItem, "NOME")%></li>
        </ItemTemplate>
        <AlternatingItemTemplate>
              <li class="li1"><%# DataBinder.Eval(Container.DataItem, "NOME")%></li>      
        </AlternatingItemTemplate>
    </asp:Repeater></ul>

</form>
    </body>
</html>

 

Default.aspx.cs

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using db;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


#region asp:DropDownList


    //DATASET
        DataSet ds = db.Sql.getDataSet("SELECT A.ID, A.NOME FROM TB_CATEGORIAS A");
        DropDownDS.DataValueField = ds.Tables[0].Columns[0].ToString();
        DropDownDS.DataTextField = ds.Tables[0].Columns[1].ToString();
        DropDownDS.DataSource = ds.Tables[0].DefaultView;
        DropDownDS.DataBind();

        ds = null;

    //DATATABLE
        DataTable dt = db.Sql.getDataTable("SELECT A.ID, A.NOME FROM TB_CATEGORIAS A");
        DropDownDT.DataSource = dt;
        DropDownDT.DataValueField = dt.Columns[0].ToString();
        DropDownDT.DataTextField = dt.Columns[1].ToString();
        DropDownDT.DataBind();

        dt = null;


    //DATAREADER

        SqlDataReader dr = db.Sql.getDataReader("SELECT A.ID, A.NOME FROM TB_CATEGORIAS A");
        while (dr.Read())
        {
            DropDownDR.Items.Add(new ListItem(dr[1].ToString(), dr[0].ToString()));
        }


#endregion

#region asp:TextBox

        //DATAREADER

        dr = db.Sql.getDataReader("SELECT A.ID, A.NOME FROM TB_CATEGORIAS A");
        while (dr.Read())
            TextBoxDR.Text+= dr[0].ToString() + " " + dr[1].ToString() + " ";    

#endregion

#region asp:DataGrid
        dt = db.Sql.getDataTable("SELECT A.ID , A.NOME, B.ID, B.NOME FROM TB_CATEGORIAS A, TB_PRODUTOS B WHERE A.ID=B.ID_CATEGORIA");

        //  dt.Rows[0].Delete();                // Remove a primeira linha
        //  dt.Rows[4].Delete();                // Remove a quinta linha
        // dt.Columns[0].ColumnName="Número";  // Renomeia a primeira coluna
        DataGridDT.DataSource = dt;
        DataGridDT.DataBind();

#endregion


#region asp:DataList
    
        //DATATABLE
        dt = db.Sql.getDataTable("SELECT A.ID , A.NOME, B.ID, B.NOME FROM TB_CATEGORIAS A, TB_PRODUTOS B WHERE A.ID=B.ID_CATEGORIA");
        dt.Columns[2].ColumnName = "ID_PRODUTO";  // Renomeia a terceira coluna
        dt.Columns[3].ColumnName = "NOME_PRODUTO";  // Renomeia a quarta coluna
        DataListDT.DataSource = dt;
        DataListDT.DataBind();

        //DATAREADER
        DataListDR.DataSource = db.Sql.getDataReader("SELECT ID, NOME FROM TB_CATEGORIAS");
        DataListDR.DataBind();
   

#endregion

#region asp:Repeater
        //DATATABLE
        RepeaterDT.DataSource = db.Sql.getDataTable("SELECT NOME FROM TB_PRODUTOS ORDER BY NOME");
        RepeaterDT.DataBind();

        //DATAREADER (modo 1)
        RepeaterDR1.DataSource = db.Sql.getDataReader("SELECT NOME FROM TB_CATEGORIAS");
        RepeaterDR1.DataBind();
        //DATAREADER (modo 2)
        RepeaterDR2.DataSource = db.Sql.getDataReader("SELECT NOME FROM TB_CATEGORIAS");
        RepeaterDR2.DataBind();

#endregion

    }

   
}

 

 

 

TAGs

ajax arquivo asp boas práticas classe conexão sql connection string cursor location desativar programas erro cs0246 função global.asa global.asax google gráfico include rewriterule upload url amigável url rewrite


2010 - Leonardo Breda