INGENIERIA DE SISTEMAS
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:
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:
Para los dos casos de conexin a la base de datos se crear un objeto de la clase SqlConnection
utilizando la cadena de conexin:
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
.NET Framework proporciona DataAdapter, que rene estos tres objetos, de la siguiente forma:
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.
--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
2
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS
--claves primarias
---claves foraneas
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
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
<connectionStrings>
</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
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");
}
}
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());
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:
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();
}
8
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS
Ejecutar proyecto:
Ejercicio propuesto
9
ESCUELA ACADEMICO PROFESIONAL DE
INGENIERIA DE SISTEMAS
10