Академический Документы
Профессиональный Документы
Культура Документы
Programacin Web
El Entorno Conectado
Durante mucho tiempo las aplicaciones que requerian el empleo de datos lo hacian a traves de un entorno conectado de datos, lo cual significa que un usuario y/o aplicacion esta conectado al origen de datos constantemente. Un escenario conectado ofrece como beneficio: Un entorno seguro de facil mantenimiento. Se puede controlar facilmente la concurrencia.
Pero a su vez este modo de trabajo nos puede presentar algunas desventajas: Requiere de una conexion de Red Permanente. Afecta la escabilidad de la aplicacin.
Pgina 2
Programacin Web
Pgina 3
Programacin Web
Para las instrucciones UPDATE, INSERT y DELETE, el valor devuelto corresponde al nmero de filas afectadas por el comando. Para los dems tipos de instrucciones, el valor devuelto es -1.
3.- Luego hacemos la conexin va script. Imports System.Data.SqlClient Public Class Form1 Dim cn As New SqlConnection("Server=(Local); DataBase=Northwind; Integrated Security=True") 4.- Luego en el Button codificamos lo siguiente. Private Sub Button1_Click 'Lo codificamos dentro de un try Catch para que se maneje un error que 'se pueda cometer, asi tal vez si la tabla ya existe, que me mande un mensaje Try
Prof. Carlos David Castilla Quiroz Pgina 4
Programacin Web
Dim comando As New SqlCommand("CrearTablaContactos", cn) comando.CommandType = CommandType.StoredProcedure 'Abre la conexion cn.Open() 'ejecuta el SQLCommand comando.ExecuteNonQuery() 'Muestra mensaje despues de Crear la Tabla MsgBox("Tabla Contactos Creada Satisfactoriamente", MsgBoxStyle.Information, "Mensaje") Catch ex As Exception 'Si la Tabla ya existe que me mande un mensaje MsgBox("La Tabla Contactos ya Existe", MsgBoxStyle.Information, "Mensaje") Finally 'Cierra la conexin cn.Close() End Try End Sub 5.- Luego ejecutamos y al dar clic sobre el button se debe mostrar el siguiente mensaje
Programacin Web
@descripcion varchar(40), @categoria int, @proveedor int AS Insert into Products(Productname, Categoryid,SupplierID) values(@descripcion,@categoria,@Proveedor) RETURN @@identity 2.- Hacemos el siguiente diseo en el formulario.
TxtProducto
btnAgreg ar btnLimpia r
TxtProveed or
TxtCategor ia
Dim cn As New SqlConnection("Server=(Local); DataBase=Northwind; Integrated Security=True") 4.- Luego en el botn btnAgregar, codificamos lo siguiente: Private Sub btnagregar_Click Try Dim comando As New SqlCommand("InsertarProducto", cn) comando.CommandType = CommandType.StoredProcedure comando.Parameters.Add("@descripcion", Me.txtproducto.Text comando.Parameters.Add("@categoria", SqlDbType.Int).Value = Val(Me.txtcategoria.Text) SqlDbType.NVarChar, 40).Value =
Pgina 6
Programacin Web
comando.Parameters.Add("@proveedor", SqlDbType.Int).Value = Val(Me.txtproveedor.Text) 'Asi definimos un parmetro de retorno Dim prm1 As New SqlParameter("@return_value", SqlDbType.Int) prm1.Direction = ParameterDirection.ReturnValue comando.Parameters.Add(prm1) 'Abrir la Conexin cn.Open() 'Ejecuta el SQLCommand comando.ExecuteNonQuery() 'Mensaje de Producto Insertado MsgBox("Se ha Insertado un Producto con Cdigo " & prm1.Value) Catch ex As Exception MsgBox(ex.Message) Finally cn.Close() End Try End Sub 5.- Luego en botn btnlimpiar, codificamos: Private Sub btnlimpiar_Click Me.txtcategoria.Clear() Me.txtproducto.Clear() Me.txtproveedor.Clear() End Sub
Instruccin ExecuteScalar:
Ejecuta la consulta y devuelve la primera columna de la primera fila del conjunto de resultados que devuelve la consulta. Se omiten todas las dems columnas y filas. Utilice el mtodo ExecuteScalar para recuperar un nico valor (por ejemplo, un valor agregado) de una base de datos. Por tanto, podemos deducir que ExecuteNonQuery lo usaremos para ejecutar la mayora de las instrucciones de SQL que ejecutar algo en la base de datos, pero que no
Prof. Carlos David Castilla Quiroz Pgina 7
Programacin Web
devolver un valor. Bueno, en realidad, en algunos casos si que devolver un valor, pero ser para indicarnos, por ejemplo, si eliminamos varias filas de la tabla, devolver el nmero de filas eliminadas. Por otro lado, ExecuteScalar lo usaremos cuando tengamos que ejecutar un cdigo de SQL del que queremos recuperar la primera columna de la primera fila. Este mtodo devuelve un valor de tipo Object que tendremos que convertir segn el valor devuelto. Por ejemplo, si queremos saber el nmero de registros (filas) de una tabla que cumple cierto criterio, podemos usar un comando SQL como este: SELECT Count(*) FROM Prueba WHERE FechaAlta >= @Param1 En este caso, el valor devuelto ser del tipo Int32 y ser el nmero de filas que hay en la tabla Prueba de la base de datos indicada en el objeto Connection que previamente habremos abierto que tenga una fecha igual o superior a la indicada en el parmetro proporcionado a ese comando. Si no hay ninguna fila que cumpla ese criterio, devolver cero. Nota: Instrucciones de SQL no significa que hay que usarlo con SQL Server, sino que son instrucciones en "lenguaje" SQL, que en SQL Server se conoce como T-SQL o Transact SQL, y que por tanto podemos usar con cualquier tipo de base de datos, (o casi).
Ejercicio Prctico N1
Txtpr o
Txte mp
Pgina 8
Programacin Web
Imports System.Data Imports System.Data.SqlClient Dim cn As New SqlConnection("Server=(local); Database=Northwind; Integrated Security=True") Private Sub Btnproductos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cmd As New SqlCommand("Select count(*) from products", cn) cn.Open() Dim x As Integer x = cmd.ExecuteScalar Me.txtpro.Text = x.ToString cn.Close() End Sub Private Sub BtnEmpleados_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim cmd As New SqlCommand("Select count(*) from employees", cn) cn.Open() Dim y As Integer y = cmd.ExecuteScalar Me.txtemp.Text = y.ToString cn.Close() End Sub
Programacin Web
2.- Luego Codificaremos lo siguiente: Imports System.Data Imports System.Data.SqlClient Public Class Form1 Dim cn As New SqlConnection("Server=(Local); DataBase=Northwind; Integrated Security=SSPI") Sub filtrar() Dim da As New SqlDataAdapter("Select * from Shippers", cn) Dim dt As New DataTable da.Fill(dt) Me.DgvEmpresa.DataSource = dt End Sub
Private Sub Form1_Load filtrar() End Sub Private Sub BtnGuardar_Click Try Dim cmd As New SqlCommand("Insert Into Shippers Values(@empresa,@telefono)", cn) cmd.Parameters.Add("@empresa", SqlDbType.VarChar, 40).Value = Me.txtemp.Text cmd.Parameters.Add("@telefono", SqlDbType.VarChar, 9).Value = Me.txtTel.Text cn.Open()
Pgina 10
Programacin Web
cmd.ExecuteNonQuery() MsgBox("Empresa Registrada...!", MsgBoxStyle.Information, "SISE") filtrar() Catch ex As Exception MsgBox(ex.Message) Finally cn.Close() End Try Dim x As Integer Dim cmd1 As New SqlCommand("Select max(shipperid) from Shippers", cn) cn.Open() x = cmd1.ExecuteScalar Me.txtcod.Text = x.ToString cn.Close() End Sub Private Sub BtnActualizar_Click Try Dim cmd As New SqlCommand("Update Shippers Set CompanyName=@empresa,Phone=@telefono where Shipperid=@codigo", cn) cmd.Parameters.Add("@empresa", SqlDbType.VarChar, 40).Value = Me.txtemp.Text cmd.Parameters.Add("@telefono", SqlDbType.VarChar, 9).Value = Me.txtTel.Text cmd.Parameters.Add("@codigo", SqlDbType.Int).Value = CInt(Me.txtcod.Text) cn.Open() cmd.ExecuteNonQuery() MsgBox("Datos Actualizados...!", MsgBoxStyle.Information, "SISE") filtrar() Catch ex As Exception MsgBox(ex.Message) Finally cn.Close() End Try End Sub Private Sub BtnEliminar_Click Try Dim cmd As New SqlCommand("Delete from Shippers where Shipperid=@codigo", cn) cmd.Parameters.Add("@codigo", SqlDbType.Int).Value = Me.txtcod.Text cn.Open() cmd.ExecuteNonQuery() MsgBox("Empresa Eliminada...!", MsgBoxStyle.Information, "SISE") filtrar() Catch ex As Exception MsgBox(ex.Message) Finally cn.Close()
Pgina 11
Programacin Web
End Try End Sub Private Sub DgvEmpresa_DoubleClick If Not IsDBNull(Me.DgvEmpresa.SelectedCells(0).Value) Then Me.txtcod.Text = Me.DgvEmpresa.SelectedCells(0).Value Me.txtemp.Text = Me.DgvEmpresa.SelectedCells(1).Value Me.txtTel.Text = Me.DgvEmpresa.SelectedCells(2).Value End If End Sub Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.txtcod.Clear() Me.txtemp.Clear() Me.txtTel.Clear() End Sub End Class
Pgina 12