En este Post comenzaremos a ver la magia de las 3 capaz, como la aplicación del usuario se conectara a través de un servicio web y este a su vez es el que hace las consultas de los datos alojados en la base de datos, todo esto siendo transparente para el usuario.
En esta sección solo veremos como realizar una prueba de conexión y configuración de nuestra base de datos, recuerden configurar correctamente los puertos de TCP/IP como lo recomendamos en el tutotial pasado : Instalación de SQL Server 2008.
primero que nada es necesario tener instalado Visual Studio Ultimate o Profesional, si no los tienen pueden trabajar con las versiones Express de C# 2010 y Web Developer 2010 pero tendrán que trabajar con los proyectos separados y hacer las conexiones entre ellos, lo mas recomendable es que tengas toda la paquetería de Visual Studio 2010 y no sus versiones Express. si deseas usar las versiones mas recientes de Visual Studio asegúrate de hacer los ajustes necesarios.
1. Abrimos Visual Studio y creamos un nuevo proyecto -> visual C# -> Aplicación de Windows Forms, llamado SistemaTerminal.
2. Ahora se cargara el diseñador y veremos nuestro formulario, después vamos a crear nuestro proyecto de WebService, sin cerrar nada, vamos de nuevo a Archivo -> Agregar -> Proyecto.
Después nos aparece la ventana para seleccionar el tipo de proyecto que deseamos agregar, primero seleccionamos plantillas tipo web el Framework 3.5 y seleccionamos Aplicación de servicio web de ASP.NET y el nombre lo definimos como WebServiceTerminal.
3. Una vez creado el WebService podemos hacer pruebas con este, vemos que nos trae un código de "HelloWord" que retorna una cadena, este es el formato de los métodos del web service de ASP.NET como ven la estructura es similar a un método cualquiera de C# con la única diferencia de su encabezado que esta definido por [WebMethod]
4. Ahora tenemos dos proyectos en nuestro explorador de soluciones, para que todo funcione correctamente y no allá ningún conflicto al momento de ejecutar el Debug vamos a establecer como proyecto de inicio nuestro proyecto de SistemaTerminal de Windows Forms. seleccionamos el proyecto SistemaTerminal damos click con el botón derecho y en el menú seleccionamos Establecer como proyecto de inicio.
5. Vamos a definir la conexión del web service, borramos el web método que tenemos del "HelloWord" y agregamos lo siguiente a nuestra clase de Service
//declaramos aquí la cadena de conexión una instancia tipo String //Data Source = .; -- indica que es local nuestra base de datos //Catalog= TerminalAutobuses; Nombre de la base de datos //Integrated Security= True; cuando usamos autentificacion de windows string is_cadenaconexion = "Data Source=.; Initial Catalog=TerminalAutobuses; Integrated Security=True"; //aqui declaramos la variable de tipo SqlConnection para la conexion a la base de datos SqlConnection lsql_conexion = null;
Si el tipo la variable SqlConnection no es reconocida por C# y nos marca un error es por que aun no agregamos la librería Data.SqlClient lo hacemos de la siguiente manera, sobre el nombre del tipo de variable SqlConnection damos click con el botón derecho luego en Resolver [si no ven la opción resolver lean mas abajo] y luego en Using.System.Data.SqlCliente, cuando damos click se agrega en la cabecera automáticamente la librería y el tipo de variable ya es reconocida.
Si no logran ver en el menú "Resolver" vamos al explorador de soluciones y en el proyecto WebServiceTerminal en la carpeta Reference, damos click derecho y agregar referencia, se nos abrirá una ventana y en la pestaña de .NET buscamos en la lista el nombre del componente System.Data seleccionamos y damos aceptar.
Después hacemos los pasos posteriores para resolver el nombre del tipo de variable.
6. ahora definimos el siguiente Web método para hacer nuestra prueba de conexión, este método recibe por referencia una cadena donde en caso de existir un error el método escribirá un mensaje en esta cadena como se lo hemos codificado, para poder mostrarlo del lado del cliente, debe ser por referencia debido a que se modificara y es necesario que el cliente muestre estos cambios, en otro caso podemos regresar la cadena con un return, pero en este método ya retorna un valor tipo True|False, para saber si el método logro hacer o no la conexión.
[WebMethod] public bool ProbarConexion(ref string as_error) { lsql_conexion = new SqlConnection(is_cadenaconexion); try { //abrimos conexion lsql_conexion.Open(); return true; } catch (SqlException e) { as_error = "No se pudo establecer la conexión a la base de datos. Error: " + e.Message.ToString(); lsql_conexion.Close(); return false; } finally { if (lsql_conexion != null) { lsql_conexion.Close(); } } }
7. Seleccionamos el proyecto WebServiceTerminal y damos click con el botón derecho y luego en Generar, esperamos a que termine de generar y estamos listos para hacer la prueba
8. ahora nos vamos al proyecto de SistemaTerminal y en la carpeta Reference damos click derecho y en agregar referencia de servicio para agregar nuestro servicio web que acabamos de crear nos abrirá una ventana como esta y damos click en Detectar ya que el servicio esta en el mismo proyecto, en otro caso debemos poner la dirección del servicio web en linea.
9. Automáticamente detectara el servicio disponible lo seleccionamos y damos el nombre de WSterminal damos aceptar y se iniciara a cargar.
podemos verlo en la carpeta de Service Reference
10. Ahora vamos a nuestro formulario del proyecto SistemaTerminal y agregaremos un botón para llamar al método de probar la conexión con la base de datos, damos doble click sobre el botón para generar automáticamente su evento click.
11. Ya en el código dentro de su evento click ponemos el siguiente código para hacer la llamada al método que hará la prueba de conexión a la base de datos.
//definimos una variable para el webservice WSterminal.Service1SoapClient LWS_conexion = new WSterminal.Service1SoapClient(); //un String que enviaremos por referencia para guardar el error string ls_error=""; //una variable local tipo boleana que recibirá el valor de retorno del metodo ProbarConexion //en esta parte se ejecuta el método bool lb_conectado= LWS_conexion.ProbarConexion(ref ls_error); //evaluamos la variable si recibió un true, el método logro hacer la conexion //y enviamos un mensaje de conexión exitosa if (lb_conectado == true) { MessageBox.Show("Se realizo la conexión correctamente"); } else { // si no logro hacer la conexion se enviá el mensaje con el string que modifico el WebService MessageBox.Show(ls_error); }
El método nos quedara de la siguiente manera.
12. Ahora podemos realizar la prueba de conexión, ejecutamos iniciamos el Debug haciendo click en el boton verde.
El servidor de desarrollo se debe iniciar en la PC esto es para el WebService
13. ahora la ventana del proyecto se abre y podemos dar click en el botón para ejecutar el metodo.
hacemos la prueba y en mi caso me arrojo este error.
Lo solucionamos de la siguiente forma, abrimos las herramientas de configuración Administración de la configuración de SQL Server,
Ahora seleccionamos Servicios de SQL Server, seleccionamos SQL Server click boton derecho y luego Iniciar, y esperamos a que el servicio se inicie.
Listo, ahora volvemos a ejecutar nuestro proyecto ya damos click en el botón probar conexión.
Bien, en nuestro siguiente tutorial podremos continuar con la creación de nuestros web métodos y para la consulta de datos y tablas con SQL Server ademas de iniciar un poco en el diseño de nuestra aplicación de usuario, les agradezco sus comentarios y no olviden compartir este post con sus amigos :) Saludos.
hacemos la prueba y en mi caso me arrojo este error.
Lo solucionamos de la siguiente forma, abrimos las herramientas de configuración Administración de la configuración de SQL Server,
Ahora seleccionamos Servicios de SQL Server, seleccionamos SQL Server click boton derecho y luego Iniciar, y esperamos a que el servicio se inicie.
Listo, ahora volvemos a ejecutar nuestro proyecto ya damos click en el botón probar conexión.
Muchas Gracias por su aporte me gustaria si tiene ya para consultas datos desde la BD.?
ResponderEliminargracias
Muy Bien, seguí adelante
ResponderEliminarCuando sigues con el siguiente tema???
ResponderEliminarGracias por el interés, espero este fin de semana subir algo, saludos.
ResponderEliminarMuy buenos tus tutoriales. Muchas gracias por el interés de enseñar. Compartamos el conocimiento. saludos
ResponderEliminarSaludos Nokio
ResponderEliminarMuy Buen aporte, con estos tipos de Tutoriales si nos proyectas para aprender! seguimos a la espera de las siguientes partes :D
ResponderEliminar