INSTRUCCIÓN | SQL | LINQ |
SELECT | Select c.CustomerID, c.CompanyName, c.contactname from customers as c | Dim query = From c In db.Customers Select c.CustomerID, c.CompanyName, c.ContactName |
WHERE | Select c.CustomerID, c.CompanyName, c.contactname from customers as c where c.Country='France' | Dim query = From c In db.Customers Where c.Country = "France" Select c.CustomerID, c.CompanyName, c.ContactName |
DISTINCT | Select DISTINCT c.country from customers as c | Dim query= From p In db.Customers Select p.Country Distinct |
JOIN | Select c.customerid, c.companyname, o.orderid, o.orderdate from Customers as c inner join orders as o on c.CustomerID=o.customerid | Dim query = From c In db.Customers Join o In db.Orders On c.CustomerID Equals o.CustomerID Select c.CustomerID, c.CompanyName, o.OrderID, o.OrderDate |
GROUP BY | Select c.companyname, count(o.orderid) from Customers as c inner join orders as o on c.CustomerID=o.customerid group by c.CompanyName | Dim query = From c In db.Customers Group Join o In db.Orders On c.CustomerID Equals o.CustomerID Into conteo = Count(o.OrderID) Select c.CompanyName, conteo |
LEFT JOIN | Select c.customerid, c.companyname, o.orderid from Customers as c left outer join orders as o on c.CustomerID=o.customerid | Dim query = From c In db.Customers Group Join o In db.Orders On c.CustomerID Equals o.CustomerID Into ov = Group From x In ov.DefaultIfEmpty() Select c.CustomerID, c.CompanyName, orderid = If(x Is Nothing, String.Empty, x.OrderID) |
CREACIÓN DE UNA CLASE EN Vb.net Prácticamente todo lo que manejemos en el entorno .NET es una clase u objeto, de hecho todas las clases derivan de una clase u objeto básico: la clase System.Object. Para explicar la creación de clases definiremos una clase que llamaremos "bicicleta". Para crear una clase debemos definir sus propiedades y sus métodos, no tiene eventos porque no tiene parte gráfica, en este ejemplo las propiedades de la clase bicicleta son: Modelo, Precio, NumeroDeVelocidades, como métodos de la clase se usan: Acelerar(km) , Frenar() y ConsultarVelocidad(). Para definir propiedades, se puede hacer creando variables públicas o con la declaración de PUBLIC PROPERTY, que cuenta con la instrucción SET para poner un valor a la propiedad y GET para obtener el valor de la propiedad, para definir un método se hace declarando una subrutina o una función, no contamos con eventos porque la clase no es un control. Las palabras PRIVATE y PUBLIC definen la accesibilidad de las propiedades, funciones o subrutinas. La definición de una propiedad o método de tipo privado indica que sólo podrá ser usada dentro del código de la misma clase, en este ejemplo si creáramos un objeto de tipo bicicleta, las especificaciones de la clase no nos permitirían acceder a la propiedad velocidad para consultarla o modificarla, ya que está definida como privada (PRIVATE). En cambio se pueden usar las subrutinas Acelerar() y Frenar() ya que son de tipo Public, y desde dentro de ellas se interactúa con las propiedades privadas, con esto conseguimos encapsular el código y hacer accesible solo aquello que queramos. |
CONECTAR A SQL SERVER CON ADO.NET
Este ejemplo crea un formulario llamado Conexión para conectarse a una base de datos de SQL Server llamada Northwind, usando autenticación de windows, la progra del formulario se detalla a continuación. Imports System.Data Imports System.Data.SqlClient Public Class Conexion DimWithEvents Cn AsNew SqlConnection PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Cn.ConnectionString = "data source=VISOAL76;initial catalog=Northwind;integrated security=true" Cn.Open() Catch XcpSQL As SqlException MessageBox.Show(XcpSQL.Number) Catch Xcp As Exception MessageBox.Show("Se ha producido un error") End Try EndSub PrivateSub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Cn.Close() Cn.Dispose() EndSub PrivateSub Cn_StateChange(ByVal sender As Object, ByVal e As System.Data.StateChangeEventArgs) Handles Cn.StateChange MessageBox.Show("Estado Actual:" & e.CurrentState.ToString) EndSub PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim cm As New SqlCommand("Select companyname from customers", Cn) Dim rds As SqlDataReader = cm.ExecuteReader ListBox1.Items.Clear() DoWhile rds.Read ListBox1.Items.Add(rds.GetString(0)) Loop rds.Close() EndSub PrivateSub Conexion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load End Sub End Class |
VB.NET ADO: Usar el Command para enviar datos a un Procedimiento Almacenado
Imports System.Data Imports System.Data.SqlClient Public Class InsertarCliente Dim cn As New SqlConnection Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try cn.ConnectionString = "Data source=visoal76;" & _ "Initial Catalog=Northwind; Integrated Security=True" cn.Open() Dim cmd As New SqlCommand("Insert_customers", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@CustomerID", SqlDbType.NChar).Value = TxtCustomerid.Text cmd.Parameters.Add("@companyname", SqlDbType.NVarChar) cmd.Parameters.Add("@contactname", SqlDbType.NVarChar) cmd.Parameters.Add("@contacttitle", SqlDbType.NVarChar) cmd.Parameters.Add("@Address", SqlDbType.NVarChar) cmd.Parameters.Add("@City", SqlDbType.NVarChar) cmd.Parameters.Add("@Region", SqlDbType.NVarChar) cmd.Parameters.Add("@PostalCode", SqlDbType.NVarChar) cmd.Parameters.Add("@Country", SqlDbType.NVarChar) cmd.Parameters.Add("@Phone", SqlDbType.NVarChar) cmd.Parameters.Add("@Fax", SqlDbType.NVarChar) cmd.Parameters("@customerid").Value = TxtCustomerid.Text cmd.Parameters("@companyname").Value = TxtCompanyname.Text cmd.Parameters("@contactname").Value = TxtContactName.Text cmd.Parameters("@contacttitle").Value = TxtContactTitle.Text cmd.Parameters("@Address").Value = TxtAddress.Text cmd.Parameters("@City").Value = TxtCity.Text cmd.Parameters("@Region").Value = TxtRegion.Text cmd.Parameters("@PostalCode").Value = TxtPostalCode.Text cmd.Parameters("@Country").Value = TxtCountry.Text cmd.Parameters("@Phone").Value = TxtPhone.Text cmd.Parameters("@Fax").Value = TxtFax.Text cmd.ExecuteNonQuery() MessageBox.Show("Dato Insertado Correctamente") Call Limpiar() cn.Close() Catch xcpSQL As SqlException MessageBox.Show("Mensaje: " & xcpSQL.Message.ToString & " Numero: " & xcpSQL.Number) Catch xcpSQL As Exception MessageBox.Show("Error de aplicacion") End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call Limpiar() End Sub Private Sub Limpiar() For Each ocontrol As Control In Me.Controls If TypeOf ocontrol Is TextBox Then ocontrol.Text = "" End If Next End Sub End Class |