Módulo 1.3: Procedimientos almacenados

banner2

Un procedimiento almacenado de SQL Server es un grupo de una o varias instrucciones Transact-SQL o una referencia a un método de Common Runtime Language (CLR) de Microsoft .NET Framework. Los procedimientos se asemejan a las construcciones de otros lenguajes de programación, porque pueden:

  • Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al programa que realiza la llamada.
  • Contener instrucciones de programación que realicen operaciones en la base de datos. Entre otras, pueden contener llamadas a otros procedimientos.
  • Devolver un valor de estado a un programa que realiza una llamada para indicar si la operación se ha realizado correctamente o se han producido errores, y el motivo de estos.

Ventajas de usar procedimientos almacenados

Tráfico de red reducido entre el cliente y el servidor

  • Mayor seguridad:
  1. Al llamar a un procedimiento a través de la red, solo está visible la llamada que va a ejecutar el procedimiento.
  2. Los procedimientos pueden cifrarse, lo que ayuda a ofuscar el código fuente.
  • Reutilización del código
  • Mantenimiento más sencillo
  • Rendimiento mejorado

Tipos de procedimientos almacenados

Temporales

                Los procedimientos temporales son una forma de procedimientos definidos por el usuario. Los procedimientos temporales son iguales que los procedimientos permanentes salvo porque se almacenan en tempdb. Hay dos tipos de procedimientos temporales: locales y globales. Se diferencian entre sí por los nombres, la visibilidad y la disponibilidad.

Sistema

Los procedimientos del sistema se incluyen con SQL Server. Están almacenados físicamente en la base de datos interna y oculta Resource y se muestran de forma lógica en el esquema sys de cada base de datos definida por el sistema y por el usuario. Además, la base de datos msdb también contiene procedimientos almacenados del sistema en el esquema dbo que se usan para programar alertas y trabajos.

Fuente: MSDN

Estructura de los procedimientos almacenados:

USE [BDName]

GO

create procedure [nombre_procedimiento]

@campo tipocampo,

@campo2 tipocampo

AS

begin

INSERT INTO tablename(campo1,…,campo2)values(@campo1, … ,@campo2);

END

GO

En el caso de ejemplo y siguiendo con la table “persona” quedaría de la siguiente manera:

USE prueba5

go

create procedure insertarprueba

@nombre varchar(80),

@apat varchar(80),

@amat varchar(80)

AS

begin

INSERT INTO persona(nombre, apat, amat)values(@nombre, @apat, @amat);

END

GO

Ejecutar el procedimiento almacenado

SQL Server permite llamar los procedimientos almacenados por dos maneras distintas:

  • Llamar los procedimientos almacenados por código: Estructura:

DECLARE @return_value int

EXEC @return_value = [dbo].[procedure_name]

@campo1 = ‘contenido’,…

@campo2 = ‘contenido’

SELECT  ‘Return Value’ = @return_value

GO

  • Uno de las ventajas que tiene SQL Server permite llamar el procedimiento almacenado desde un Modo diseño:

azm3

Nos abre la siguiente ventana, en la cual ingresamos los datos que queremos ingresar al procedimiento almacenado. Da clic en Ok, para ejecutar el procedimiento almacenado.

azm32

El resultado del procedimiento almacenado es el siguiente:

DECLARE      @return_value int

EXEC   @return_value = [dbo].[insertarprueba]

@nombre = N’prueba1′,

@apat = N’prueba’,

@amat = N’prueba3′

SELECT ‘Return Value’ = @return_value

GO

Módulo 1.2: Bases de datos Mysql vs SQL Azure

banner

Hola y bienvenidos a este nuevo tutorial, en esta ocasión les traigo una comparación entre SQL Azure y MySQL Server para hacer Altas, Bajas y Cambios directo en él manejador.

Para este tutorial vamos a reutilizar la tabla del tutorial anterior llamada “persona”.

Altas:

SQL Azure

Para SQL Azure vamos a utilizar SQL Server como manejador, para poder insertar un usuario en la tabla persona, debemos asegurarnos que estamos en la base de datos creada en el tutorial anterior.

azurec2

Una vez seleccionada la base de datos, añadimos la siguiente línea de código:

insert into persona (nombre, apat, amat) values (‘Juanito’,’Perez’,’Rodriguez’);

Subrayamos y damos clic en Excecute para poder agregar ese usuario. Vemos que nos aparece un mensaje de que ha sido afectada una línea de la tabla

azurec22

MySQL Server

Seleccionamos la tabla que creamos en el tutorial anterior.

azurec23

Nos vamos a la pestaña SQL y posteriormente damos clic en insertar, nos abrirá el contenido de nuestra tabla en forma de formulario, llenamos la información y damos clic en Continuar.

azurec24

Nos aparecerá la siguiente leyenda

azurec25

Cambios

SQL Azure

En SQL Azure basta con agregar la siguiente línea de código:

update  persona set amat = ‘Sanchez’ where nombre = ‘Juanito’;

Subraya y da clic en F5 para ejecutar

Para verificar que el contenido se editó exitosamente, ejecuta la siguiente línea de código

select * from persona

azurec26

MySQL Server

Al dar clic en el nombre de la tabla, aparecerá en el panel de opciones casi al final, el contenido que tiene la tabla.

azurec27

Para editarlo sólo da clic en Editar

Cambia el contenido de amat, manualmente y una vez editado, da clic en continuar.

azurec28

Una vez editado el contenido aparecerá la siguiente leyenda.

azurec29

Volvemos a dar clic en el nombre de la tabla y veremos los siguientes cambios.

azurec30

Bajas

SQL Azure

Para eliminar un registro, SQL Server te permite tener el control de qué y cómo deseas eliminarlo, ya sea por la llave primaria o por algún otro campo.

Para eliminar algún registro basta con ingresar la siguiente línea de código:

delete from persona where apat = ‘Perez’

Subrayamos y damos clic en F5 para realizar los cambios en la tabla, para verificar los cambios, ingresamos:

select * from persona

azurec31

MySQL Server

Cómo en MySQL Server nos muestra una preview del contenido de la tabla, sólo debemos de dar clic en Borrar

azurec32

Seleccionamos OK para confirmar el registro que deseamos eliminar

azurec33

Y de manera automática, el registro fue eliminado.

azurec34

Conclusión:

En lo personal el hecho de que sólo necesites dar clic en Borrar para eliminar un registro, puede sonar al principio algo muy atractivo, fácil y rápido, pero créanme cuando les comento, en el momento en que se tiene un montón de registros y debes de realizar búsquedas para determinar que registro debes eliminar, es realmente muy tedioso y cansado estar investigando de forma manual, tanto que terminas mejor haciendo un enlace con PHP para hacerlo más rápido. SQL Server te permite tener un control más limpio al momento de querer sacarle provecho a las bases de datos que a diferencia de MySQL Server, no es necesario depender de una interfaz de diseño para poder realizar grandes consultas o cambios, puedes anidar consultas dentro de otras consultas sin temer por tu información, además, uno de los puntos en contra que tiene mysql es la facilidad con la que se genera la duplicidad de registros.

Módulo 1.1: Bases de datos Mysql vs SQL Azure

banner

Azure mode:

Hola y bienvenidos a este nuevo tutorial, en esta ocasión les traigo una comparación entre SQL Azure y MySQL Server.

Creando Bases de datos en Azure

Para poder crear una base de datos en Azure, tenemos dos maneras.

  • Nos vamos al panel de Azure y damos clic en SQL Database

azure1

  • Damos clic en Agregar

azure2

  • Damos nombre a la base de datos, al momento de ingresemos un nombre, Azure automáticamente verificará que, él nombre con el que queremos crear la nueva base de datos esté disponible.
  • Configura de acuerdo a tus necesidades la capacidad, servidor, accesos y la tarifa con la que desees tener el contenido de tu base de datos.
  • Da clic en Crear y lísto! Tenemos nuestra base de datos en Azure

azure3

  • Una vez creada nuestra base de datos nos aparece un panel completo de configuración, con el cuál aparecerá el nombre del servidor para poder ingresar a SQL Server y manejar la información para nuestro proyecto, desde allá. Azure nos trae una gráfica del uso que se le está dando al servidor desde cualquier parte del mundo, su rendimiento, seguridad, reportes en tiempo real, todo en un mismo panel.

azure4

TIP:

A diferencia de los servidores Linux dónde es más comúnmente utilizado MySql Server, Azure tan sólo para poder entrar a sus bases de datos te pide no sólo el login sino que también te solicita y/o verifica la IP de tu ordenador, de no ser reconocida la IP del ordenador, deberás ir al Panel de administración para dar de alta, la nueva dirección IP para tener acceso al servidor.

Forma 1: Sí ya tienes pre configurado el acceso a Azure desde SQL Server, basta con seguir los siguientes pasos:

  • Da clic en New Query

azure5

  • Teclea la siguiente línea de código

create database databasename;

Subraya y antes de ejecutar, verifica que este en master.

azure6

  • Por último, da clic en Execute, espera un momento para que se genere la nueva base de datos.

azure7

MySQL Server

Para trabajar con MySQL Server usare un servidor Linux, que implementa CPanel. Cpanel a diferencia de Azure cuenta con una sección que incluye distintas opciones para crear y manejar las bases de datos.

azure8

Para crear la base de datos:

  • Damos clic en Bases de datos MySQL
  • Ingresamos el nombre de la base de datos y damos clic en Crear una base de datos.

azure9

Sí todo sale bien, nos aparecerá una leyenda como la que se muestra a continuación.

azure10

  • Generar un acceso independiente de casa base de datos

azure11

  • Una vez generado el usuario y contraseña, debes vincular ese usuario y contraseña a la base de datos que acabamos de crear para poder tener acceso a ella.

azure12

Creando tablas

SQL Azure

A diferencia de MySql en SQL y SQL Azure debemos cambiar el auto_increment por identity(1,1) para indicar que queremos tener un valor auto incrementable, la ventaja del uso del identity es que nosotros podemos indicar que tanto queremos que aumente de un registro a otro, es decir de 5 en 5 o 10 en 10.

Para este ejemplo sencillo vamos a crear una tabla que lleve el nombre de persona, esta tabla nos servirá para poder implementar Altas, Bajas y Cambios.

Create table persona(

idpersona int not null identity(1,1),

nombre varchar(80) not null,

apat varchar(80) not null,

amat varchar(80) not null

PRIMARY KEY NONCLUSTERED (idpersona)

);

MySQL Server

  • Una vez creado los accesos, volvemos al CPanel debemos de dar clic en PHPMyAdmin
  • Buscamos y seleccionamos el nombre de nuestra base de datos nueva
  • Para crear la tabla ingresamos, para poder generar la tabla, damos clic en continual.

create table persona(

idpersona int AUTO_INCREMENT PRIMARY KEY,

nombre varchar(80) not null,

apat varchar(80) not null,

amat varchar(80) not null)

Vemos que aparece una leyenda de creación de la tabla con contenido vacío

azure13

Cómo vemos existe una gran diferencia en cuanto a la seguridad de accesos para ambos tipos de servidores, mientras que MySQL restringe sólo por usuario y contraseña, Azure pide hasta la configuración de una IP para poder dar acceso al servidor.

Trabajar con SQLite En aplicaciones universales Windows 10

Hola amigos, en esta ocasión veremos cómo utilizar bases de datos locales en una aplicación universal usando Windows 10 con visual studio 2017. Utilizar SQLite te permite almacenar información dentro de la misma aplicación, sin necesidad de requerir un servidor propio o de una conexión a internet. El proceso para poder implementar SQLite a comparación de cómo se implementaba en Visual Studio 2013 o 2012 ha cambiado un poco, por esa razón les traigo este tutorial.

Lo primero que debemos hacer es entrar a este link para descargar el SQLite

  • Creamos una aplicación Windows universal

sqlite1

  • Abrimos el administrador de librerías y agregamos SQLite for Universal Windows Platform

sqlite2

  • Abrimos NuGet y vamos a instalar las siguientes dos librerías, para acceder a ellas busca SQLite.Net

sqlite3

  • Creamos una clase, esta servirá para poder crear nuestra base de datos. En la clase vamos a definir [PrimaryKey, AutoIncrement], al inicio nos aparecerá en color rojo, por lo que debemos agregar “using SQLite.Net.Attributes” para que nos reconozca el formato de SQLite.

sqlite4

  • Sólo por ser de prueba vamos a crear una base de datos que almacene el ID auto incrementable, nombre, apellido paterno (apellido1) y apellido materno (apellido2). Nota: no olvides poner el get y set cómo se muestra en la imagen.

sqlite5

En el MainPage vamos agregar 5 TextBlock, 3 TextBox y dos botones cada uno con sus respectivos eventos clic.

sqlite6

Código:

<TextBox x:Name=”txtsis” HorizontalAlignment=”Left” Margin=”116,10,0,0″ TextWrapping=”Wrap” Text=”” VerticalAlignment=”Top” Width=”197″/>

<TextBlock x:Name=”textBlock” HorizontalAlignment=”Left” Margin=”23,10,0,0″ TextWrapping=”Wrap” Text=”Nombre” VerticalAlignment=”Top” Height=”32″ FontSize=”20″/>

<TextBlock x:Name=”textBlock_Copy” HorizontalAlignment=”Left” Margin=”10,44,0,0″ TextWrapping=”Wrap” Text=”Apellido 1″ VerticalAlignment=”Top” Height=”32″ FontSize=”20″/>

<TextBox x:Name=”txtdia” HorizontalAlignment=”Left” Margin=”116,44,0,0″ TextWrapping=”Wrap” Text=”” VerticalAlignment=”Top” Width=”197″/>

<TextBlock x:Name=”textBlock_Copy1″ HorizontalAlignment=”Left” Margin=”10,81,0,0″ TextWrapping=”Wrap” Text=”Apellido 2″ VerticalAlignment=”Top” Height=”32″ FontSize=”20″/>

<TextBox x:Name=”txtpulso” HorizontalAlignment=”Left” Margin=”116,78,0,0″ TextWrapping=”Wrap” Text=”” VerticalAlignment=”Top” Width=”197″/>

<Button x:Name=”btnguardar” Content=”Guardar” HorizontalAlignment=”Left” Margin=”25,150,0,0″ VerticalAlignment=”Top” Click=”btnguardar_Click”/>

<TextBlock x:Name=”txtestatus” HorizontalAlignment=”Left” Margin=”60,300,0,0″ TextWrapping=”Wrap” Text=”” VerticalAlignment=”Top”/>

<Button x:Name=”btnver” Content=”Ver” HorizontalAlignment=”Left” Margin=”186,150,0,0″ VerticalAlignment=”Top” Click=”btnver_Click”/>

<TextBlock x:Name=”txtcontenido” HorizontalAlignment=”Left” Margin=”51,320,0,0″ TextWrapping=”Wrap” Text=”” VerticalAlignment=”Top”/>

 

  • Definimos dos variables, una será la conexión, mientras que la otra será la que utilicemos para dar la ubicación y nombre de la base de datos

string path;

SQLite.Net.SQLiteConnection conn;

  • Después del this.InitializeComponent(); agregamos:

path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, “db.sqlitesample”);

conn = new SQLite.Net.SQLiteConnection(new

SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);

conn.CreateTable<prueba>();

  • En el evento click del botón de guardar agregamos:

var s = conn.Insert(new prueba()

{

nombre = txtsis.Text,

apellido1 = txtdia.Text,

apellido2 = txtpulso.Text,

});

txtestatus.Text = “Elemento guardado”;

  • En el evento Click del botón de ver datos agregamos:

var query = conn.Table<prueba>();

string id = “”;

string nombre = “”;

string apellido1 = “”;

string apellido2 = “”;

 

 

foreach (var message in query)

{

id = id + ” ” + message.Id;

nombre = nombre + ” ” + message.nombre;

apellido1 = apellido1 + ” ” + message.apellido1;

apellido2 = apellido2 + ” ” + message.apellido2;

 

}

 

txtcontenido.Text = “ID: ” + id + “\nNombre: ” + nombre + “\nApellido paterno: ” + apellido1+ “\nApellido materno: ” + apellido2;

sqlite7

 

Habilitar modo desarrollo en Windows 10 Visual Studio 2017

Windows 10 a diferencia de otras versiones como window 8/8.1 es necesario habilitar el modo desarrollador para poder realizar aplicaciones universales con Visual Studio 2017 y hacerlo es realmente sencillo.

Cuando instalamos la versión de Visual Studio 2017 y creamos aplicaciones universales, al momento de abrir el MainPage nos aparece un mensaje como el siguiente:

conf1

Para activar el modo desarrollador tenemos dos opciones:

  • Abrimos el panel de notificaciones y veremos que hay una notificación que nos pregunta si deseamos obtener una licencia de desarrollador, damos clic y nos abrirá la ventana de configuración para desarrolladores.

conf2

  • Nos vamos a configuración > sección para desarrolladores

conf3

Por default en configuración, sección para desarrolladores nos viene Aplicaciones de la tienda Windows, cambiamos por modo desarrollador y damos clic en sí.conf4

En este paso debes tener paciencia ya que tarda más o menos media hora en instalar el paquete de desarrollo, en mi caso tuve que esperar sin usar el pc ya que me pedía reiniciar en más de una ocasión.

conf5

Una vez instalado el modo desarrollador abrimos Visual Studio, veremos que ya podemos desarrollar nuestras aplicaciones.

conf6

Post basado en: microsoft.docs

‘php.validate.executablePath’ Visual Studio Code

Cuando hablamos de Visual Studio Code, hablamos de un IDE bastante personalizable, lo cierto es que el impacto que tiene para aquellos desarrolladores que regularmente utilizamos distintos lenguajes de programación en nuestro día a día es que nos permite trabajar sin necesidad de cambiar de IDE o incluso en algunos casos como en Python, cambiar el S.O. de nuestro PC. Una de las desventajas, si se puede llamar así que tiene VSC a comparación de otros IDE’s dedicados a un solo lenguaje es que algunas cosas, hay que configurarlas desde 0.

Por default Visual Studio Code, deja al usuario la capacidad de no depender de algún servidor virtual o algún otro tipo de server para ejecutar en este caso PHP, lo que deja un lienzo en blanco y es cuando genera el error “’php.validate.executablePath’”. Este error aparece cuando no tenemos una carpeta de ejecución para PHP configurada, para solucionarlo es muy sencillo.

figura1

En la ventana Settings.json aparece en la parte inferior un campo de búsqueda, para agilizar el tiempo copia “php.validate.executablePath” para abrir el apartado PHP.

figura2

Cómo se muestra en la siguiente imagen, Visual Studio Code no encuentra la carpeta para ejecutar PHP, porque no la tiene por default.

figura3

Para agregarla te recomiendo primero verificar la ubicación en que tienes el ejecutable, en mi caso uso WAMP como servidor virtual y mi carpeta es la siguiente: C:\wamp\bin\php\php5.4.3, sin embargo, para visual studio code debe de ingresarse así: C:/wamp/bin/php/php5.4.3/php.exe, sí no cuentas con un servidor virtual, te recomiendo descargar el ejecutable de aquí.

Cambia la extensión tanto en la configuración de usuario como en configuración de área de trabajo, guarda los cambios, cierra la ventana y reinicia visual studio code.

figura4

Trabajando con funciones en C# y Visual Basic

titulo funciones

Objetivos:

Conocer la manera en que podamos trabajar con funciones que regresen un valor al igual de poder trabajar con funciones que se encuentren en otra clase usando C# o Visual Basic.

Materiales y métodos:

  • Visual Studio 2012 o superior
  • Windows Forms Platform

Procedimiento funciones en la misma clase:

C#

Para declarar una función debemos definirla de la siguiente manera:

Permisos static tipo_funcion nombre_funcion (valores que recibe) { }

Dónde:

Permisos = public (pueden acceder a él desde cualquier punto de la aplicación) ó private (sólo en esa clase)

Tipo_funcion= tipo de dato que va a regresar por ejemplo double, int, string

Valores que recibe es opcional, entre paréntesis se le indica el número de datos que va a recibir pueden ser uno, ninguno o más de uno.

Paso 1: Declarando la función

Para este ejemplo vamos a declarar la función de suma que devuelva el resultado tipo double y que reciba dos números que son los que va a sumar.

public static double suma(double valor1, double valor2)        {

double suma = 0;

suma = valor1 + valor2;

return suma;

}

Paso 2: Usando la función

En este ejemplo he usado un botón con su evento Click para poder usar la función. Cómo la función suma devuelve un valor tipo double debemos declarar una variable del mismo tipo, el cuál obtendrá el valor resultante de la función. Como la función está en la misma clase bastará con indicar el nombre de la función y entre paréntesis indicar los valores a sumar separados por una coma.

private void button1_Click(object sender, EventArgs e)

{

double sum;

sum = suma(5, 15);

label1.Text = “Usando funciones: suma de 5 + 15 =  ” +sum.ToString();

}

Visual Basic

A diferencia de las funciones utilizadas en C# en Visual Basic es necesario cambiar Static por Function y el tipo de valor de retorno ponerlo después del paréntesis:

Public Function Nombre (valores de entrada) As tipo_valor_regreso

End Function

Paso 1: Declarando la función

Public Function suma(valor1 As Double, valor2 As Double) As Double

Dim sum As Double

sum = valor1 + valor2

Return sum

End Function

 

Paso 2: Llamando a la función

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

Dim sum As Double

sum = suma(5, 15)

Label1.Text = “Usando la función suma = ” + sum.ToString

End Sub

 

Procedimiento funciones en otra clase:

C#

A diferencia sí queremos llamar funciones declaradas en otra clase será necesario indicar en que clase se ubican antes del nombre de la función.  Ejemplo

double multi;

multi = funciones.multiplicación(5, 15);

label2.Text = “Usando funciones: multiplicación = ” + multi.ToString();

Visual Básic

Para llamar funciones ubicadas en otra clase es necesario declarar una variable que sea un objeto de la clase dónde se encuentre la función que queremos llamar.

Dim func As New formulas()

Supongamos que ahora queremos realizar una multiplicación entre dos valores y dicha función se ubica en la clase formulas.

Public Class formulas

    Public Function resta(valor1 As Double, valor2 As Double) As Double

Dim vt As Double

vt = valor1 – valor2

Return vt

    End Function

End Class

Para llamar a ese método sería:

Resultado = objeto_formulas.función(valor1,valor2)

 

Dim rest As Double

rest = func.resta(15, 5)

Label2.Text = “Usando la función resta = ” + rest.ToString

Código resultante:

C#

Descarga el código aquí

Visual Basic 

Descarga el código aquí