lunes, 26 de junio de 2017

OBJETO CONNECTION

DEFINICION

Un objeto connection representa una conexión a una base de datos,una sesión con una conexión incluye las sentencias SQL que son ejecutadas y los resultados que son devueltos a través de dicha conexión. Una misma aplicación puede tener una o más conexiones con una sola base de datos o puede tener conexiones con varias bases de datos diferentes.La forma estándar de establecer una conexión con una base de datos es llamando al método DriverManager.getConnection.

Este método toma como parámetro una cadena de caracteres que contiene una URL.
La clase DriverManager trata de localizar el driver que pueda conectar con la base de datos representada por esa URL.
Mediante la clase Connection se pueden realizar estas tareas:
Crear una sentencia (objetos Satamente, PreparedStatement o CallableStatement).
Comprometer y retrotraer los cambios efectuados en la base de datos y liberar los bloqueos de base de datos que están retenidos actualmente.
Cerrar la conexión y los recursos del servidor de inmediato en lugar de esperar a que se liberen automáticamente.

El objeto Connection es el principal objeto utilizado para proporcionar un vínculo entre las bases de datos y una aplicación en Java. Connection proporciona métodos para manejar el procesamiento de transacciones, para crear objetos y ejecutar instrucciones SQL, y para crear objetos para la ejecución de procedimientos almacenados.
Se puede emplear tanto el objeto Driver como el objeto DriverManager para crear un objeto Connection. Se utiliza el método connect() para el objeto Driver, y el método getConnection() para el objeto DriverManager.La manera más usual de establecer una conexión a una base de datos es invocando el método getConnection() de la clase DriverManager.

El método getConnection() permite que el nombre de usuario y la contraseña se pasen también como parámetros:
String usuario = "root";
String contraseña = "123456789";
Connection conn = DriverManager.getConnection (url,usuario,contraseña);
Estableciendo la Conexión
Connection con = DriverManager.getConnection (
                                               url,login, password);

Un objeto “Connection” representa una conexión a una base de datos.
La clase “DriverManager” intenta ubicar el controlador que pueda conectarse a la base de datos representada en la URL.

PROPIEDADES:
CONNECTIONSTRING 
Especifica la referencia a la base de datos con la cual queremos conectar, conteniendo en una cadena de texto la información necesaria para efectuar esa conexión mediante parejas de valores separadas por “ ; ”.Los valores que podemos asignar son:

Data Source: DNS=Nombre ODBC de la Base de Datos
Usuario: UID =Nombre de Usuario
Password: PWD=Password del usuario para la base de datos
Ejemplo:
<%conexion.ConnectionString="DSN=MIOdbc;UID=pepe;PWD=1234"%>

MODE 
Especifica los permisos de la conexión.
Algunos de los valores más habituales de la conexión son:
Establece permiso solo de Lectura.
Establece permiso solo de escritura.
Establece permiso de Lectura /Escritura.
Ejemplo:

<%conexion.Mode=3%>

PROPIEDAD ISOPEN
Se desconecta posteriormente, la propiedad IsOpen seguirá siendo True, aunque la conexión ya esté cerrada.

PROPIEDAD PORT
Obtiene el número del puerto del servidor utilizado por la conexión HTTP.
lPortNumber = Connection.Port

Valor de retorno
lPortNumber As Long: el número de puerto utilizado por la conexión con el servidor.

PROPIEDAD REDIRECTDEPTH
Obtiene o define el número de redirecciones de encabezados HTTP que se siguen.
lRedirects = Connection.RedirectDepth [ = lRedirects]

Valor de retorno
lRedirects As Long: el número de redirecciones de encabezados HTTP seguidas. En los objetos Connection nuevos, el valor predeterminado es 15.

Observaciones
Application Center Test no analiza automáticamente el cuerpo de la respuesta, por lo que la propiedad RedirectDepth no sigue ni cuenta las redirecciones de las etiquetas META HTML.
Utilice un valor cero para evitar que se sigan las redirecciones.

PROPIEDAD SERVER
Obtiene el nombre de host o la dirección IP del servidor al cual está conectado el cliente.
strName = Connection.Server

Valor de retorno
strName As String: el nombre de host o la dirección IP del servidor Web.

PROPIEDAD USESSL
Comprueba si la conexión HTTP entre el cliente y el servidor utiliza el protocolo SSL.
bIsUsingSSL = Connection.UseSSL

Valor de retorno
bIsUsingSSL As Boolean: True (verdadero) si la conexión HTTP utiliza SSL.


METODOS

BEGINTRANS
Abre una transacción; todas las operaciones que realicemos a partir de ese momento no serán efectivas hasta que no cerremos la transacción. 
Ejemplo: 

<% conexion.BeginTrans %>

CLOSE 
Cierra el objeto.
Ejemplo:

<% conexion.close %>

COMMITTRANS 
Cierra una transacción haciendo efectivos los cambios efectuados dentro de ella.
Ejemplo:

<% conexion.CommitTrans %>

EXECUTE 
Ejecuta una sentencia SQL contra la base de datos.
Ejemplo:

<% Set resultado=conexion.execute (Select * from amigos) %>

OPEN 
Abre la conexión con los parámetros especificados en las propiedades.
Ejemplo:

<% conexion.open %>

ROLLBACKTRANS
 
Deshace todos los cambios efectuados en la base de datos desde el inicio de la transacción.
Ejemplo:

<% conexion.RollBackTrans %>

RESUMEN
Un objeto conexión representa una conexión a una base de datos incluye las sentencias SQL que son ejecutadas y los resultados que son devueltos a través de una conexión. Proporciona métodos para manejar el procesamiento de transacciones, para crear objetos y ejecutar instrucciones SQL  para crear objetos para la ejecución de procedimientos almacenados.

SUMMARY
A connection object represents a connection to a database that includes the SQL statements that are executed and the results that are returned through a connection. Provides methods for handling transaction processing, for creating objects, and for executing SQL statements to create objects for executing stored procedures.

BIBLIOGRAFIA





sábado, 24 de junio de 2017

CASO DE ESTUDIO DE VISUAL Y SQL

“AÑO DEL BUEN SERVICIO AL CIUDADANO”
UNIVERSIDAD POLITÉCNICA AMAZONICA

FACULTAD DE INGENIERÍA DE SISTEMAS Y TELEMATICA
ESCUELA ACADÉMICA PROFESIONAL DE INGENIERÍA DE SISTEMAS Y TELEMÁTICA

LABORATORIO DE PROGRAMACION I
CASO DE ESTUDIO
INTEGRANTE

EMELINA LISSETH DIAZ CRUZ

DOCENTE
ING. MARCO AURELIO PORRO CHULLI
CICLO
  IV/A
2017

LABORATORIO DE PROGRAMACIÓN I
Caso Práctico: Una empresa organizadora de  eventos requiere un programa que le permita registrar a sus participantes. Esta empresa organiza Seminarios, FORUM, Talleres, etc. en los diferentes departamentos del país registrando los Ponentes que dictan estos eventos El participante se puede registrar el mismo día del evento haciendo el pago respectivo en el lugar donde se organiza el evento. Se le entregara el Recibo de Pago indicando el Número de Recibo, Fecha,  Evento, Lugar e Importe pagado. 
Se tiene la base de datos:

use master
go

if exists (select * from sysdatabases where name='BDEvento')
 drop database BDEvento
go

create database BDEvento
go

use  BDEvento
go

--creacion de las tablas

CREATE TABLE Ponente (
       codponente           varchar(4)  NOT NULL,
       nombre               varchar(80) NOT NULL,
       fecnac               date        NOT NULL,
       sexo                 char(1)     NOT NULL,
       grado                varchar(25) NOT NULL,
       PRIMARY KEY (codponente)
)
Go


CREATE TABLE Evento (
       codevento             char(3) NOT NULL,
       nombreevento          varchar(80) NULL,
       lugar                 varchar(80) NULL,
               fecha                datetime NULL,
       hora                 datetime NULL,
       precio                decimal(8,2) NULL,
       idponente            varchar(4) NULL,
       PRIMARY KEY (codevento),
       FOREIGN KEY (idponente) REFERENCES Ponente
)
Go

CREATE TABLE Participante (
       codparticipante      int identity(1,1),
       nombre               varchar(60) NULL,
       direccion            varchar(40) NULL,
       telefono             varchar(11) NULL,
               fecnac               date NULL,
       sexo                 char(1) NULL,
       profesion            varchar(60) NULL,
       PRIMARY KEY (codparticipante)
)
go

CREATE TABLE ReciboPago (
       nrecibo              char(8) NOT NULL,
       fecha                date NULL,
       idparticipante       int NULL,
       idevento             char(3) NULL,
       PRIMARY KEY (nrecibo),
       FOREIGN KEY (idparticipante) REFERENCES Participante,
       FOREIGN KEY (idevento) REFERENCES Evento
)
go

CREATE PROCEDURE sp_Inserta_ReciboPago 
  @col1  VARCHAR(8),
  @col2  DATE,
  @col3  VARCHAR(60),
  @col4  VARCHAR(80)
 
AS
  DECLARE @cod_parti INT--
  DECLARE @cod_event INT--
  SELECT @cod_parti=codparticipante FROM Participante WHERE nombre=@col3
  SELECT @cod_event =codevento   FROM evento  WHERE nombreevento =@col4
  INSERT ReciboPago
  VALUES(@col1,@col2,@cod_parti,@cod_event)
Go


---INSERTAR LISTE EVENTOS

CREATE PROCEDURE sp_Inserta_Evento 

 @col1  char(3),
 @col2 varchar(80),
 @col3 varchar(80),
 @col4 datetime,
 @col5 datetime,
 @col6 decimal(8,2),
 @col7 varchar(80)

AS
  DECLARE @cod_ponente INT
  SELECT @cod_ponente=codponente  FROM Ponente WHERE nombre=@col7
 
  INSERT evento
  VALUES(@col1,@col2,@col3,@col4,@col5,@col6,@cod_ponente)
Go
-------------
CREATE PROCEDURE sp_Listado_evento
AS
  SELECT * FROM evento
Go
----insertar ponente
CREATE PROCEDURE sp_Inserta_ponente
  @col1 varchar(4),
   @col2 varchar(80),
  @col3 date,
  @col4 char(1),
  @col5 varchar(25)
  AS
  INSERT ponente
  VALUES(@col1,@col2,@col3,@col4,@col5)
Go
--listado ponente
CREATE PROCEDURE sp_Listado_Ponente
AS
  SELECT * FROM Ponente
Go

--LISTAR PARTICIPANTE
CREATE PROCEDURE sp_Listado_Participante
AS
  SELECT * FROM Participante
Go
--------------------

INSERT Ponente   VALUES('POO1','JOSE PEREZ TELLO','01/10/1996','M','MAGISTER')
INSERT Ponente   VALUES('POO2','LISSETH DIAZ CRUZ','06/08/1998','F','INGENIERA')

INSERT Ponente   VALUES('POO3','JORGE CARRAZCO HUAMAN','01/11/1993','M','LICENCIADO')
INSERT Ponente   VALUES('POO4','NERY CRUZ GUERRERO','02/07/1980','F','INGENIERA')
INSERT Ponente   VALUES('POO5','ELMOR DIAZ BUSTAMANTE','12/10/1965','M','MAGISTER')
INSERT Ponente   VALUES('POO6','CARMELA GUERRERO PALACIOS','02/10/1988','F','INGENIERA')
 SELECT * FROM Ponente
   
INSERT Evento   VALUES( '001','CUMPLEAÑOS','LAS TERRAZAS','07/05/2017','8:45',12,'P001')
INSERT Evento   VALUES( '002','FIESTA DE PROMOCION','EL ZAFIRO','02/05/2017','10:45',120,'P002')

INSERT Evento   VALUES( '003','CUMPLEAÑOS DE BODA','LAS ESFERAS','07/08/2017','9:11',180,'P003')
INSERT Evento  VALUES( '004','FIESTA DE CACHIMBO','EL ZURDO','02/05/2017','10:45',160,'P004')
INSERT Evento  VALUES( '005','CORONOCION DE REINA','HOTEL LUCERO-LIMA','09/04/2017','9:45',210,'P005')
INSERT Evento  VALUES('006','BACHILLERATO ','JAEN','11/03/2017','10:00',320,'P006')

SELECT * FROM Evento

INSERT Participante VALUES('ZARA HORNA TAZA','BAGUA GRANDE','04199998765','07/05/2017','F','Profesora')
INSERT Participante VALUES('FRANK GONZALES TERRONES','LONYA GRANDE GRANDE','04195871299','12/09/2017','M','Doctor')

INSERT Participante VALUES('LUISA GOMEZ PERALTA','PUCALPA','04194448765','07/04/2017','F','Profesora')
INSERT Participante VALUES('FRAN TORRES IZQUIERDO ','JAEN','04169874299','12/02/2017','M','Doctor')
INSERT Participante VALUES('ZARAI PORRO CRUZ','MADRE DE DIOS','04196598765','08/05/2017','F','Profesora')
INSERT Participante VALUES('FRANCHESCA MALDINE TERRONES','LA VICTORIA','04194171299','12/06/2017','F','Doctor')
 SELECT * FROM Participante







EN VISUAL.NET



1. En la Capa de Datos importar el Espacio de Nombre para el Manejo de Base de Datos
Imports System.Data.SqlClient

2. Luego en la misma capa crear una clase con el nombre CONEXION
Public Class CONEXION
    Private con As SqlConnection

    Public Function conecta() As SqlConnection
      Con = New SqlConnection("Server=LISSETH;Initial Catalog=BDEvento; Integrated Security=SSPI") 
    Return con
    End Function
End Class

3. Luego crear otra clase con el nombre PROCESOS 
Imports System.Data.SqlClient
Public Class PROCESOS
    Private con As SqlConnection  'Conxeion a la BD
    Private cmd As SqlCommand     'Objetos de la BD
    Private dtb As DataTable      'Acesso a datos
    Private da As SqlDataAdapter  'Consultar a la BD
    Private cn As New CONEXIÓN

Public Structure Recibopago
        Public nrecibo As Integer
        Public fecha As Date
        Public nombreparticipante As String
        Public nombreevento As String
    End Structure
    Public Function insertar_recibopago(ByVal st As Recibopago) As Boolean
        Dim opc As Boolean
        Try
            Con = Cn.conecta()
            If Con.State = ConnectionState.Closed Then Con.Open()
            Cmd = New SqlCommand("sp_Inserta_recibopago", Con)
            Cmd.CommandType = CommandType.StoredProcedure
            Cmd.Parameters.Add("@col1", SqlDbType.Char, 8).Value = st.nrecibo
            Cmd.Parameters.Add("@col2", SqlDbType.Date).Value = st.fecha
            Cmd.Parameters.Add("@col3", SqlDbType.VarChar, 80).Value = st.nombreparticipante
            Cmd.Parameters.Add("@col4", SqlDbType.VarChar, 80).Value = st.nombreevento
            Dim i As Integer = Cmd.ExecuteNonQuery
            opc = IIf(i > 0, True, False)
        Catch ex As Exception
            opc = False
        End Try
        Return opc
    End Function



    Public Function listado_evento() As DataTable
        con = cn.Conecta
        dtb = New DataTable
        da = New SqlDataAdapter("SELECT * FROM EVENTO", con)
        da.Fill(dtb)
        Return dtb
    End Function
    ''''
    Public Function listado_Participante() As DataTable
        con = cn.Conecta
        dtb = New DataTable
        da = New SqlDataAdapter("SELECT * FROM participante", con)
        da.Fill(dtb)
        Return dtb
    End Function

End Class
4. En la Capa de negocios invocar la clase datos

Imports System.Data.SqlClient
Imports DATOS

5. Luego en la Capa negocios crear  clase con el nombre valida

Public Class VALIDA
    Private obj As New Procesos
    Public Event mistake(c As Integer) 'Manejo de Excepcion
    Public Function insert(ByVal nom As PROCESOS.Recibopago) As Boolean
        Dim opc As Boolean
        If nom.nombreevento = "" Then
            opc = False
            RaiseEvent mistake(1)
            Throw New Exception("Ingrese el nombre del evento")
        Else
            obj.insertar_recibopago(nom)
            opc = True
        End If
        Return opc
    End Function

    Public Function Mostrar_evento() As DataTable
        Return obj.listado_evento
    End Function
    Public Function Mostrar_participante() As DataTable
        Return obj.listado_Participante
    End Function
End Class

6. Luego en la capa Presentación crear  el formulario  FRM_PAGO_DE_EVENTO





Imports System.Data.SqlClient
Imports DATOS
Imports NEGOCIOS
Public Class FRM_PAGO_DE_EVENTO
    Dim Sw As Integer
    Dim WithEvents app As New VALIDA
    Dim reg As New PROCESOS.recibopago

    Private Sub FRM_PAGO_DE_EVENTO_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.DTGVEVENTO.DataSource = app.Mostrar_evento
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        FRM_AGREGAR_PARTICIPANTE_RECIBO_DE_PAGO.Show()

    End Sub

    Private Sub DTGVEVENTO_CellClick(sender As Object, e As Windows.Forms.DataGridViewCellEventArgs) Handles DTGVEVENTO.CellClick
        Dim i As Integer
        i = DTGVEVENTO.CurrentRow.Index

        LBLCODEVENTO.Text = DTGVEVENTO(0, i).Value()
        LBLNOMBREEVENTO.Text = DTGVEVENTO(1, i).Value()
        LBLLUGAREVENTO.Text = DTGVEVENTO(2, i).Value() + "-" & DTGVEVENTO(3, i).Value() + "-" & DTGVEVENTO(4, i).Value() + "-PRECIO:" & DTGVEVENTO(5, i).Value()
    End Sub

    Private Sub BTNGRABAR_Click(sender As Object, e As EventArgs) Handles BTNGRABAR.Click
        Dim r As Byte
        r = MsgBox("Grabar Datos ", 4 + 32 + 256, " Datos Guardados")
        Try
            With reg
                .nrecibo = Me.Txtnumerorecibo.Text
                .fecha = Me.DTPFECHAEVENTO.Text
                .nombreparticipante = Me.LBLNOMPARTI.Text
                .nombreevento = Me.LBLNOMBREEVENTO.Text
            End With
            If app.insert(reg) Then
                MsgBox(" Grabacion Correctamente", 0, "OKI!!!")
            Else
                MsgBox("Grabación Incorrectamente", 0, "ERROR!!!")
            End If
        Catch ex As Exception
            MsgBox(ex.Message, 0, "Error")
        End Try
    End Sub

    Private Sub BTNSALIR_Click(sender As Object, e As EventArgs) Handles BTNSALIR.Click
        Me.Close()
    End Sub

    Private Sub BTNNUEVO_Click(sender As Object, e As EventArgs) Handles BTNNUEVO.Click
        Txtnumerorecibo.Text = ""
        LBLCODEVENTO.Text = ""
        LBLNOMBREEVENTO.Text = ""
        LBLLUGAREVENTO.Text = ""
        LBLCODPARTI.Text = ""
        LBLNOMBREEVENTO.Text = ""
    End Sub

    Private Sub BTNCANCELAR_Click(sender As Object, e As EventArgs) Handles BTNCANCELAR.Click
        LBLCODPARTI.Text = ""
        LBLNOMBREEVENTO.Text = ""
    End Sub
End Class


7. Luego en la capa Presentacion crear  el formulario  FRM_AGREGAR_PARTICIPANTE_RECIBO_DE_PAGO.




Imports System.Data.SqlClient
Imports DATOS
Imports NEGOCIOS
Public Class FRM_AGREGAR_PARTICIPANTE_RECIBO_DE_PAGO
    Dim WithEvents app As New VALIDA
    Private Sub FRM_AGREGAR_PARTICIPANTE_RECIBO_DE_PAGO_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.DTGVPARTICIPANTE.DataSource = app.Mostrar_participante
    End Sub
    Private Sub DTGVPARTICIPANTE_CellContentClick(sender As Object, e As Windows.Forms.DataGridViewCellEventArgs) Handles DTGVPARTICIPANTE.CellContentClick
        Dim Dt As SqlDataAdapter
        Dim Tb As New DataTable
        Dim codigo As String
        Dim Con As SqlConnection
        Dim cn As New CONEXION
        Con = cn.Conecta
        codigo = Me.DTGVPARTICIPANTE.Rows(Me.DTGVPARTICIPANTE.CurrentRow.Index).Cells(0).Value

        Dt = New SqlDataAdapter("SELECT * FROM participante WHERE codparticipante='" & codigo & "'", Con)
        Dt.Fill(Tb)
        If Tb.Rows.Count > 0 Then
            FRM_PAGO_DE_EVENTO.LBLCODPARTI.Text = Tb.Rows(0).Item(0)
            FRM_PAGO_DE_EVENTO.LBLNOMPARTI.Text = Tb.Rows(0).Item(1)
        End If
        Me.Close()
    End Sub
End Class
8. Trabajo culminado



Luego clik en el botón rojo y seleccione en el  DataGridView