- Microsoft Core XML Services (MSXML) 6.0 --> Motor SQL
- Microsoft SQL Server Management Studio Express --> Ide SQL Server
- Script para la base de datos que usaremos en este ejemplo
Paso 1: Creación de la base de datos e inicio de los servicios necesarios
Nota: Si ya tienes iniciado los servicios necesarios y tienes la base de datos puedes pasar al siguiente paso.
Primero instalamos el motor y luego el ide. Una vez que tengamos ambos instalados abrimos el SQL Management y nos conectamos con el servidor. Normalmente es el nombre de tu computador seguido de "\SQLExpress". (Véase la imágen)
Una vez que nos conectamos abrimos el script que bajaron (Archivo, Abrir, Archivo) y lo ejecutan con el botón "Ejecutar". Se crearán nuevas tablas en la base de datos "master". Para este ejemplo usaremos la tabla "dbo.usuarios". (Para un proyecto propio creen sus propias tablas y tengan en cuanta los de sus campos)
Ahora que ya tenemos la tabla requerida debemos iniciar el servico de SQL Server para permitir que Visual Studio pueda conectarse con ella. Para ello abrimos "SQL Server Configuration Manager" que se encuentra en Inicio, Todos los Programas, Microsoft SQL Server 2005, Herramientas de configuración.
Una vez abierto nos vamos al panel izquiero y abrimos "Servicios de Sql Server 2005". En el panel de la derecha aparacerán dos servicios, uno de ellos está detenido, debemos iniciarlo modificando su modo de inicio como "manual" (en sus propiedades y en la ficha Servicios") y luego iniciarlo.
Una vez hecho esto podemos comenzar con la programación en Visual Studio.
Paso 2: Creación de la interfaz gráfica y las clases necesarias junto con WebService
Para este proyecto debemos tener 3 cosas:
- Una interfaz gráfica
- Una clase con los datos que usaremos para grabar a la base de datos
- Un WebService que se encarga de la conexión
Lo primero que haremos será conectar el Visual Studio con SQL Server. Para ello nos vamos a la pestaña de la izquierda "Explorador de Servidores" y creamos una nueva conexión:
Lo siguiente que haremos es la interfaz gráfica usando un Web Form:

Lo siguiente que debemos hacer es añadir el WebService. Para estoo añadimos un nuevo elemento y seleccionamos "Servicio Web". Se creará una carpeta con nombre "App_Code" en la cual se encuentra nuestro WebService y además se creará un fichero ".asmx" en la raíz del proyecto.
Anexo 2: Registrar WebService
Ahora hay que registrar el WebService al proyecto para que este pueda ser usado. Debemos arrancar el proyecto usando el fichero del servicio web que se encuentra en la raíz del proyecto que tiene extensión ".asmx". Cuando este arranque veremos una página representando al WebService:

Cuándo la veamos copiamos la URL del WebService y cerramos la ventana. Ahora damos click con el botón derecho en el proyecto (en la ventana "Explorador de soluciones") y seleccionamos "Página de propiedades". En la ventana que se mostrará seleccionamos "Agregar referencia web". Ahora en la ventana en el espacio "Direccion URL" pegamos la URL del WebService y en "Nombre referencia Web" escribimos el nombre que le daremos a la referencia, en mi caso le puse "webServiceEjem" y añadimos la referencia.
Una vex hecho esto nos dirigimos al código del WebService que se encuantra dentro de "App_Code" e importamos las librerías:
en su código agragamos las siguiente variables con sus métodos para ingresar y devolver sus valores:
Una vex hecho esto nos dirigimos al código del WebService que se encuantra dentro de "App_Code" e importamos las librerías:
- using System.Data;
- using System.Data.SqlClient;
en su código agragamos las siguiente variables con sus métodos para ingresar y devolver sus valores:
private string rut;
private string password;
private string habilitado;
private string funcion;
public Usuario()
{
}
public string Rut{
set { this.rut = value;}
get { return this.rut; }
}
public string Password{
set { this.password = value; }
get { return this.password; }
}
public string Habilitado {
set { this.habilitado = value; }
get { return this.habilitado; }
}
public string Funcion {
set { this.funcion = value; }
get { return this.funcion; }
}
private string password;
private string habilitado;
private string funcion;
public Usuario()
{
}
public string Rut{
set { this.rut = value;}
get { return this.rut; }
}
public string Password{
set { this.password = value; }
get { return this.password; }
}
public string Habilitado {
set { this.habilitado = value; }
get { return this.habilitado; }
}
public string Funcion {
set { this.funcion = value; }
get { return this.funcion; }
}
Ahora que tenemos lista esta clase debemos programar el WebService para conectar a la base de datos y almacenar los datos. Para ello nos vamos nuevamente al WebService. Lo primero es hacer una nueva variable de tipo "SQLConnection" que es la que se encarga de la conexión a SQL Server, en mi caso le puse por nombre "conexion":
SqlConnection conexion;
Ahora crearemos el método encargado de conectar y almacenar los datos, en mi caso usé el nombre "almacenarUsuarios":
[WebMethod]
public void almacenarUsuario(Usuarios user)
{
}
Es importante mencionar que a un método en WebService se le antepone la sentencia
[WebMethod] que lo identifica como un método perteneciente a un Servicio Web. Además este método recibe una variable de tipos "Usuarios". La variable la recibirá de la interfaz gráfica y esta vendrá con todos los datos que el usuario ingresará.
Ahora añadimos la siguiente línea al método:
conexion = new SqlConnection("Data Source=WOLF\\SQLExpress;Integrated Security=True");
Anexo 3: Cadena de conexión
Esta crea una nueva conexión usando una cadena de conexión. ES IMPORTANTE mencionar que esta cadena no les servirá. Para saber cuál es su cadena deben primero ir a la pestaña de la izquierda "Explorador de servidores", damos con el botón derecho a la conexón que hicimos al principio y después en propiedades. En la ventana propiedades de la derecha debemos copiar toda la cadena de conexión que está en el ítem "Cadena de conexión" y reemplazar la del código anterior:

Nota: La cadena que copiarás será parecida a esta:
Data Source=WOLF\SQLExpress;Integrated Security=True
Pero si la copiamos tal cuál el programa se caerá. Debemos agregar entre el nombre del computador y \SQLExpress otro "\", de este modo quedaría así:
Data Source=WOLF\\SQLExpress;Integrated Security=True
Con la cadena lista abrimos la conexión añadiendo la sentencia: conexion.Open();
Data Source=WOLF\SQLExpress;Integrated Security=True
Pero si la copiamos tal cuál el programa se caerá. Debemos agregar entre el nombre del computador y \SQLExpress otro "\", de este modo quedaría así:
Data Source=WOLF\\SQLExpress;Integrated Security=True
Con la cadena lista abrimos la conexión añadiendo la sentencia: conexion.Open();
Ahora escribimos la consulta en forma de string:
string sql = "Insert into usuarios(rut, password, habilitado, funcion) values ('{0}', '{1}', '{2}', '{3}')";
Las etiquetas '{0}', '{1}', '{2}', '{3}' representan comodines los cuales se reeplazarán por los datos a ingresar.
Ahora ejecutamos la consulta:
SqlCommand query = conexion.CreateCommand();
query.CommandText = String.Format(sql, user.Rut, user.Password, user.Habilitado, user.Funcion);
query.ExecuteNonQuery();
Si se fijan en la segunda línea estamos usando la cadena "sql" que es la de la consulta que creamos anteriormente y los comodines que tenía se reemplazan en el mismo orden que estaban escritos por los valores de rut, password, habilitado y funcion los cuáles obendremos desde la interfaz y que rescatamos usando los métodos de la clase "Usuarios".
Ahora sólo queda la interfaz. Nos vamos a esta y programamos botón "Ingresar". Ahora haremos que la interfaz le pase los valores que el usuario ingrese a la clase "Usuarios" y a la vez pasaremos estos datos al WebService que se encaragará de grabarlos en la base de datos usando el método almacenarUsuarios.
Añadimos el siguiente código al botón "Ingresar":
//Segmento 1
localhostWebService.Usuario user = new localhostWebService.Usuario();
user.Rut = this.TextBox1.Text.Trim();
user.Password = this.TextBox2.Text.Trim();
user.Habilitado = this.TextBox3.Text.Trim();
user.Funcion = this.TextBox4.Text.Trim();
//Segmento 2
localhostWebService.WebService wsBaseDato = new localhostWebService.WebService();
wsBaseDato.almacenarUsuario(user);
this.TextBox1.Text = "";
this.TextBox2.Text = "";
this.TextBox3.Text = "";
this.TextBox4.Text = "";
En el segmento 1 creamos una nueva instancia de la clase "Usuarios" con nombre "user" pero en forma de WebService para que este pueda tener acceso a ella. Además usamos los métodos de la clase para ingresar los valores a la nueva instancia de la clase.
En el segmento 2 creamos una nueva instancia del WebService con nombre "wsBaseDato". Además usamos el método almacenarUsuario() del WebService y le pasamos la instancia de la clase "Usuarios" con nombre "user" que contiene los valores que el usuario ingresó para que se guarden en la base de datos. Al hacer esto el WebService los recibe en el método almacenarUsuarios y los guarda en la base de datos.
Ya hemos conectado satisfactoriamente Visual Studio y SQL Server. Ahora basados en este código pueden programar en el WebService un método que les permita leer desde la base de datos y mostrarlos por pantalla, asi también como eliminar o modificar la información.
Aquí les dejo el código fuente (Para abrirlo usen Archivo, Abrir, Sitio Web y seleccionen la carpeta):
http://www.megaupload.com/?d=J7BHYLAJ
Nota: Para que funcione apropiadamente deben conectar el Visual Studio con su servidor de base de datos (Véase Anexo 1), registrar el WebService (Véase Anexo 2) y escribir la cadena de conexión (Véase Anexo 3)