VB.Net

COMPARACIÓN DE DECLARACIONES EN SQL VRS LINQ


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