none
Conexión a bases de datos

    Question

  • Buenas tardes,

    He utilizado Visual Studio 2008 para desarrollar aplicaciones para windows mobile, pero actualmente me encuentro evaluando como llevar a cabo las conexiones a bases de datos (Oracle, SQL server, PostgreSQL), ya que mirando las referencias que pueden ser agregadas al proyecto no logro encontrar System.Data.Odbc por ejemplo, como se puede lograr con el framework normal. Es por esto que me surgen dudas como:

    - Para cada motor de bases de datos se debe descargar el driver para windows mobile?

    - Para el acceso a bases de datos desde los desarrollos para móviles es recomendable hacerlo del mismo modo como se lleva a cabo para los desarrollos para windows por ejemplo?

    Mil gracias por la atención y la colaboración que me puedan prestar.

    Saturday, July 16, 2011 11:28 PM

Answers

  • Buenos días,

    Como solución al problema (Error http 403.14 - Forbidden) presentado anteriormente a la publicación del WebService la solución fué:

    > Abrir el Administrador de IIS -> Inicio -> Ejecutar -> inetmgr

    En la ventana de configuración:

    > Sitios -> click Carpeta_de_nuestro_servicio

    En las opciones de IIS damos doble click en examen de directorios y el en menú de acciones ubicado a la derecha accionamos habilitar

    Espero sea de utilidad.

    • Marked as answer by Xantiago Tuesday, July 19, 2011 4:57 PM
    Tuesday, July 19, 2011 4:57 PM

All replies

  • hola

    pero esta base de datos que mencioans donde estara alojada ? imagino en un server y te conectaras por medio de la red, no ?

    o sea no apuntas a tener juna db local en el propio dispositivo mobil, o si ? o sea a usar Sql Compact

    imagino ademas que tu PDA cuenta con conexion wireless para pdoer conectarse a la red, si es asi pdorias intentar hacer referencia a las librerias de ado.net y conectarte directo a la db definiendo el connection string de este server remoto que tiene la db

    igualmente por ahi podrias evaluar de crear servicio web que pdorias consumir desde la PDA, o sea tu aplicacion en el dispositivo mobil se conectaria a estos servicio en lugar de a la db directo

    serian estos servicio quenes se conectaran a la db para enviar la informacion

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Saturday, July 16, 2011 11:46 PM
  • Hola,

    Si la base de datos estaría alojada en un servidor, la idea sería evaluar como acceder a los datos, la idea del webservice es una buena idea y una buena posibilidad, mi inquietud radica principalmente en la forma de como se pueden llevar a cabo las conexiones a bases de datos de forma directa (aunque esta posibilidad sería descartada en caso de ser muy complicada o que la recomendación técnica fuera utilizando un servicio web).

    ¿Tienes alguna recomendación?

    Gracias.

    Sunday, July 17, 2011 12:00 AM
  • el lado de conectarte por odbc aunque puedieras no lo aconsejaria

    pero has probado dentro de la aplciacion mobiles hacer una referencia a System.Data.SqlClient

    con este si lo dispones pdoria conectarte directo, pero deberas configurar el PDA para conectarte a la red dodne esta el servidor

    si quieres puedes trabjarlo con el simulador

     

    Cómo conectarse a un Servidor SQL desde el Emulador de Windows Mobile

     

    lo que no estoy seguro es si se peuda hacer los mismo con Oracle y PostgreSQL, por eso el servicio seria una buena alternativa, porque te abstrae de este problema, ya que en el servicio alojado en un sitio con el IIS ahi si puede conectarte directo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Sunday, July 17, 2011 12:29 AM
  • Muchas gracias,

    Revisaré SqlClient y reportaré, además también considero que el WebService es una buena opción.

    Sunday, July 17, 2011 12:49 AM
  • Buenas noches,

    Luego de llevar a cabo varias pruebas no logro conectarme de manera directa por ejempo a PostgreSQL utilizando:

    SqlConnection conexion = new SqlConnection();
    conexion.ConnectionString = "Persist Security Info=False;User ID=Usuario;Password=clave;Initial Catalog=qlocal;Server=192.168.0.102,5432";
    conexion.Open();
    


    El compact framework no arroja detalles del error simplemente:

    SQLException.

    Realizaré pruebas para examinar la funcionalidad del WebService y las comentaré.

    Muchas Gracias.

    Monday, July 18, 2011 4:44 AM
  • de manera directa por ejempo a PostgreSQL

    y eso ? cada db tiene su proveedor de datos concreto

    no puede conectar cualquweir con cualquiera

    para PostgreSQL usa

     

    Npgsql - .Net Data Provider for Postgresql

    Npgsql: User's Manual

     

    pro si quieres algo generico deberas programar usando las interfaces genricas de ado.net

     

    DbProviderFactories (ADO.NET)

    Escritura de código independiente del proveedor en ADO.NET

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, July 19, 2011 3:48 AM
  • Muchas gracias por la colaboración,

    Si para cada proveedor he utilizado las librerías correspondientes, así como conexiones por ODBC para desarrollos de aplicaciones de escritorio. He estado consultando pero estos proveedores no siempre cuentan con un soporte total en el compact framework.

    Actualmente me encuentro llevando a cabo la prueba del WebService y funciona bien al momento de compilarlo en Visual Studio 2008 pero cuando intento accederlo desde el explorador de internet (http://localhost/primer_servicio) me encuentro con el siguiente error:

    Error HTTP 403.14 - Forbidden

    El servidor web está configurado para no mostrar una lista los contenidos de este directorio.

    En las opciones del IIS he dado click derecho en la carpeta llamada primer_servicio, la cual contiene todos los arhivos y carpeta generadas por el visual studio al momento de crear el WebService, y he seleccionado la opción convertir en aplicación pero no parece surtir ningún efecto, el código utilizado es:

    namespace PrimerServicio
    {
      /// <summary>
      /// Summary description for Service1
      /// </summary>
      [WebService(Namespace = "http://localhost/primer_servicio", Description="El primero de los servicios web")]
      [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
      [ToolboxItem(false)]
      // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
      // [System.Web.Script.Services.ScriptService]
      public class Service1 : System.Web.Services.WebService
      {
        [WebMethod(Description="Este servicio web consulta las especies",BufferResponse=true,CacheDuration=300)]
        public DataTable Especies()
        {
          DataTable respuesta = new DataTable();
          System.Data.Odbc.OdbcConnection conexion = new System.Data.Odbc.OdbcConnection();
          conexion.ConnectionString = "Driver={PostgreSQL ODBC DRIVER(ANSI)}; Server=localhost; Port=5432; Database=basedatos; Uid=user; Pwd=clave;";
          conexion.Open();
          System.Data.Odbc.OdbcCommand comando = new System.Data.Odbc.OdbcCommand();
          comando.Connection = conexion;
          comando.CommandText = "SELECT especie.* FROM especie ORDER BY nomespecie";
          comando.CommandType = CommandType.Text;
          System.Data.Odbc.OdbcDataAdapter adaptador = new System.Data.Odbc.OdbcDataAdapter();
          adaptador.SelectCommand = comando;
          adaptador.Fill(respuesta);
          conexion.Close();
          return respuesta;
        }
    
        [WebMethod]
        public string HelloWorld()
        {
          return "Hello World";
        }
      }
    }
    

    Muchas gracias por la atención y la colaboración.

    Tuesday, July 19, 2011 4:00 AM
  • Buenos días,

    Como solución al problema (Error http 403.14 - Forbidden) presentado anteriormente a la publicación del WebService la solución fué:

    > Abrir el Administrador de IIS -> Inicio -> Ejecutar -> inetmgr

    En la ventana de configuración:

    > Sitios -> click Carpeta_de_nuestro_servicio

    En las opciones de IIS damos doble click en examen de directorios y el en menú de acciones ubicado a la derecha accionamos habilitar

    Espero sea de utilidad.

    • Marked as answer by Xantiago Tuesday, July 19, 2011 4:57 PM
    Tuesday, July 19, 2011 4:57 PM