Está en la página 1de 10

ESCUELA ACADEMICO PROFESIONAL DE

INGENIERIA DE SISTEMAS

DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET

Implementacin de Acceso a Datos


Ing. Daz Leyva Teodoro

En C#, si se utiliza .NET Framework, no es necesario cargar controladores ODBC para tener acceso a la
base de datos. Slo hay que establecer la cadena de conexin para el objeto de conexin a bases de
datos.Puede ser de dos formas distintas, segn se indique la autenticacin de Windows o la de
SQL Server.

En la primera no hay que indicar ni usuario ni password, en la segunda s que hay que indicar esos dos
datos.

1. Cadena de conexin con autenticacin de Windows. Para conectar a una base de datos de SQL
Server con autenticacin de Windows, la cadena de conexin ser:

String connectionString = Server = nombreServidor; database = nombreBaseDatos; Integrated


Security = True;

2. Cadena de conexin con autenticacin de SQL Server. Para conectar a una base de datos de SQL
Server usando autenticacin del propio SQL Server, la cadena de conexin ser:

String connectionString Server = nombreServidor; database = nombreBaseDatos; user id =


Usuario; password = Contrasea;

Para los dos casos de conexin a la base de datos se crear un objeto de la clase SqlConnection
utilizando la cadena de conexin:

SqlConnection cn = new SqlConnection(connectionString);

En C#, mediante .NET Framework, el acceso a los datos se simplifica an ms a travs del conjunto de
clases proporcionado por ADO.NET, que admite el acceso a bases de datos con los controladores ODBC,
as como tambin, a travs de proveedores OLE DB. Las aplicaciones de C# pueden interactuar con
bases de datos SQL para la lectura, escritura y bsqueda de datos mediante clases ADO.NET de .NET
Framework y a travs de Microsoft Data Access Component (MDAC). El espacio de nombres y las clases
System.Data.SqlClient de .NET Framework facilitan an ms el acceso a las bases de datos de SQL
Server.

En C#, para realizar una operacin de lectura de la base de datos, puede utilizar una conexin, un
comando y una tabla de datos. Por ejemplo, para conectarse a una base de datos de SQL Server con el
espacio de nombres System.Data.SqlClient, puede utilizar lo siguiente:

1
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

Una clase SqlConnection.


Una consulta, como una clase SqlCommand.
Un conjunto de resultados, como una clase DataTable.

.NET Framework proporciona DataAdapter, que rene estos tres objetos, de la siguiente forma:

El objeto SqlConnection se establece mediante la propiedad de conexin del


objeto DataAdapter.
La consulta que se ejecutar se especifica con la propiedad SelectCommand de DataAdapter.
El objeto DataTable se crea utilizando el mtodo Fill del objeto DataAdapter .El
objeto DataTable contiene los datos del conjunto de resultados devueltos por la consulta. Puede
recorrer en iteracin el objeto DataTable para tener acceso a las filas de datos usando la
coleccin de filas.

Ejemplo 01
Cree una aplicacin Web para listar los clientes de la base de datos ventas2016.
Para desarrollar el ejemplo primero crearemos una base de datos ventas2016 con 2 tablas cliente y
pas, en las siguientes clases se irn agregando ms tablas a la base de datos, que corresponde a la
venta de implementos deportivos de forma presencial y por internet.

--crear base de datos con valores por defecto

IF OBJECT_ID(' ventas2016') IS NOT NULL


BEGIN
USE master
DROP DATABASE ventas2016
END
CREATE DATABASE ventas2016

--creando tablas
CREATE TABLE CLIENTE(
IDCLIENTE CHAR(5) NOT NULL,
NOMBRES VARCHAR(40),
APELLIDOS VARCHAR(40),
IDPAIS CHAR (5) NOT NULL,
TELEFONO VARCHAR(20),
EMAIL VARCHAR(40)
)

go

CREATE TABLE PAIS(


IDPAIS CHAR (5) NOT NULL,
NOMBRE VARCHAR(40)
)
go

2
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

--claves primarias

ALTER TABLE CLIENTE


ADD CONSTRAINT CLIENTE_PK
PRIMARY KEY(IDCLIENTE)
GO
ALTER TABLE PAIS
ADD CONSTRAINT PAIS_CPK
PRIMARY KEY(IDPAIS)

---claves foraneas

ALTER TABLE CLIENTE


ADD CONSTRAINT CLIENTE_PAIS_CFK
FOREIGN KEY(IDPAIS)
REFERENCES PAIS(IDPAIS)

go
---registros
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0001','ESPAA')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0002','ECUADOR')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0003','CHILE')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0004','ALEMANIA')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0005','BRASIL')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0006','COLOMBIA')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0007','PERU')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0008','ARGENTINA')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0009','MEXICO')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0010','BOLIVIA')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0011','PARAGUAY')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0012','BRASIL')
INSERT INTO PAIS (IDPAIS,NOMBRE) VALUES('0013','FRANCIA')

go
INSERT INTO CLIENTE
VALUES('C0001','MARCO','ARDURA MARTINEZ','0005','5565656','MAM@HOTMAIL.COM'),
('C0002','ANGELICA','ARMESTO RODRIGUEZ','0005','5535456','AAR@HOTMAIL.COM'),
('C0003','JULIA',' BEAR GOMEZ','0005','2515656','JBG@HOTMAIL.COM'),
('C0004','ARMANDO',' CARBONELL GARCIA','0002','5515654','ACG@HOTMAIL.COM'),
('C0005','NELSON',' CRESPO FERNANDEZ','0002','5815154','NCF@HOTMAIL.COM'),
('C0006','ANTONIO',' CUESTA VEGA','0006','5225154','ACV@HOTMAIL.COM'),
('C0007','ANGEL',' LOPEZ FERNANDEZ','0006','2225151','ALF@HOTMAIL.COM'),
('C0008','ESTEBAN',' RELLAN LOPEZ','0010','3225151','ERL@HOTMAIL.COM'),
('C0009','ROGER',' ZAMITIZ JIMENEZ','0010','3225121','RZJ@HOTMAIL.COM'),
('C0010','JOSE' ,'ZORRILLA MENENDEZ','0013','3225122','JZM@HOTMAIL.COM'),
('C0011','NADIA', 'ALVAREZ ALVAREZ','0007','3225122','NAA@HOTMAIL.COM'),
('C0012','NIDIA' ,'ALVAREZ NUEZ','0007','3229122','NAN@HOTMAIL.COM')

3
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

1. Cree una aplicacin Web ProyectoWeb2016:Men Archivo>Nuevo>Proyecto:

Al aceptar tenemos la solucin con la aplicacin Web:

2. A la solucion agrega run proyecto Bibloteca de clases con el nombre de app.datos: Clic derecho
sobre la solucin Proeyecto2016>Agregar> Nuevo proyecto:

4
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

Al aceptar ,en la solucion tenemos la capa app.datos:

2.1 En el archivo Web.config, crear la cadena de conexin con el nombre de sqlconexion:

<connectionStrings>

<add name="sqlconexion" providerName="System.Data.SqlClient"


connectionString="server=(local);database=ventas2016; integrated
security=true" />

</connectionStrings>

2.2 En la capa app.datos vamos a crear una clase Conexin para realizar la conexin a la base
de datos ventas2016.clic drecho sobre capa app.datos>Agregar>nuevo elemento y
seleccione clase:

5
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

Luego de agregar la clase se tiene:

2.3 En la clase de Conexin, escriba el cdigo:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace app.datos
{
public class Conexion
{
//crear objeto conexion con la cadena de conexion configurada
//en el archivo web.config
private static SqlConnection cn = new
SqlConnection(ConfigurationManager.ConnectionStrings["sqlconexion"
].ConnectionString);
public static SqlConnection abrir()
{
try
{
cn.Open();
return cn;
}
catch (Exception)
{
throw new Exception("Error en la conexion");
}
}

public static void Cerrar()


{
cn.Close();
}

6
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

3. En app.datos, cree clase ClienteDAO y escriba mtodo para listar los clientes:

using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace app.datos
{
public class ClienteDAO
{

//listar clientes
public static DataTable listar()
{
try
{
//instruccin SQL para listar clientes
string sql = "SELECT
IDCLIENTE,NOMBRES,APELLIDOS,TELEFONO,EMAIL FROM CLIENTE ";
//objeto dataadapter para ejecutar sql a traves de la
//conexion a la base de datos
SqlDataAdapter da = new SqlDataAdapter(sql,
Conexion.abrir());

//objeto tabla para recibir datos del SqlDataAdapter


DataTable dt = new DataTable();
//cargar datos en la tabla
da.Fill(dt);
//retornar datos en la tabla
return dt;
}
catch (Exception)
{
throw;
}
}
}
}

7
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

4. Crear formulario web frm_lista_clientes.aspx y agregar un control Gridview para listar los
clientes:

En el evento load del formulario, escriba el cdigo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using app.datos;
namespace ProyectoWeb2016
{
public partial class frm_lista_clientes : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
listarClientes();
}

public void listarClientes() {


//fuente de datos
GridView1.DataSource = ClienteDAO.listar();
//desplegar datos
GridView1.DataBind();
}
}
}

8
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

Ejecutar proyecto:

Ejercicio propuesto

Cree un WebForm para listar los clientes por pas:

9
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS

10