• Viernes 19 de Abril de 2024, 18:59

Autor Tema:  Acceso A Datos Desde Una Dll En C++  (Leído 1776 veces)

orosello

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Acceso A Datos Desde Una Dll En C++
« en: Lunes 7 de Mayo de 2007, 19:52 »
0
Hola estoy intenetando acceder a una base de datos ya sea en SQL o en Acces desde una dll hecha en c++, pero cuando tratro de usar el namespace Sqlclient en el caso de acceder al servidor SQL me dice que no es un namespace válido. También traté de hacerlo importando directamente la dll ado y resultó lo que pasa que me inserta los valores una sola vez, es decir yo capturo los distintos eventos del sistema ejemplo, cuando se crea una nueva ventana, cuando se destruye, cuando se activa y a partir de ahí obtengo toda la información referente a dicha ventana, clase, nombre de la ventana, proceso que la ejecutó, etc. Pero cuando trato de isertar esa información en la base de datos solo me lo inserta para el 1er evento, lugo la aplicación no hace más nada. Por favor si alguien sabe donde es el problema se lo agradeceria mucho.

Saludos Onel.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Acceso A Datos Desde Una Dll En C++
« Respuesta #1 en: Miércoles 9 de Mayo de 2007, 05:01 »
0
ayudaria mucho si adjuntas el codigo, parece problema de mal uso e los componentes de SQL para manipular los datos pero podría ser cualquier cosa.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

orosello

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Acceso A Datos Desde Una Dll En C++
« Respuesta #2 en: Miércoles 9 de Mayo de 2007, 06:20 »
0
Hola: JuanK

     Mira lo que hacemos es lo siguiente:
        1-  Crear una clase donde importamos la dll de ADO
Código: Text
  1.  
  2. #import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")
  3.  
  4.  
       2- Esta tiene un método
Código: Text
  1.  
  2.  
  3. const LPCSTR STRING_CONNECTION = ..............
  4.       BOOL Conectar(_ConnectionPtr& pCone)
  5. {
  6.     _bstr_t bstrCone(STRING_CONNECTION);
  7.     try
  8.     {
  9.          pCone.CreateInstance (__uuidof(Connection));
  10.          pCone->Open(bstrCone ,_bstr_t (""), _bstr_t (""), adModeUnknown );
  11.          return TRUE;
  12.       }
  13.   catch (_com_error& ce)  {  return FALSE;  }
  14.   catch(...)   {  MessageBox(NULL,"Ah ocurrido otro error","Error",MB_OK);
  15.    return FALSE;  }
  16. }
  17.  
  18.  
       3- Luego yo incluyo esta clase en la stdafx.h que la uso en mi dll. Posteriormente en mi dll creo la siguiente funcion

Código: Text
  1.  
  2. BOOL InsertPerson()
  3. {
  4.   BOOL bRespuesta = TRUE;
  5.   _ConnectionPtr pAdoCone;
  6.   _RecordsetPtr Rs(__uuidof(Recordset));
  7.   if(Conectar(pAdoCone))
  8.   {
  9.     Rs->PutRefActiveConnection(pAdoCone);
  10.     _bstr_t bstrSql("Insert Into Client (id,name) Values (3,'name')");
  11.     Rs->Open(bstrSql, vtMissing, adOpenStatic, adLockReadOnly, adCmdUnknown);
  12.     SetCursor(LoadCursor(NULL,IDC_WAIT));
  13.     return bRespuesta;
  14.   }
  15. }
  16.  
  17.  
         

    Ahora pero cuando ejecuto mi aplicación y utilizo la dll, solo inserta en la BD una sola vez, e incluso deja de ejecutar las restantes  funciones de la aplicación.

Nota: Si me pudieras orientar sobre otra posible solución....

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Acceso A Datos Desde Una Dll En C++
« Respuesta #3 en: Miércoles 9 de Mayo de 2007, 19:13 »
0
pueden haber mas problemas, pero uno de ellos o el primero que veo asi de pasadita es que estas abriendo una nueva conexion cada vez que insertas un dato... no es mucho mas fácil abrir la conexion una única vez? porque me late que despues de la pimera vez que llamas a insertar el metodo conectar siempre te dara false por lo cual no insertaras nada.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

orosello

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Acceso A Datos Desde Una Dll En C++
« Respuesta #4 en: Viernes 11 de Mayo de 2007, 10:09 »
0
Hola:

       Estuve revisando lo que me dijiste, y lo que no sirve es el modo de hacer la conexion a la base de datos. Tu sabes alguna manera diferente de hacer esto en la dll para poder insertar los  datos que necesito?

Saludos

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Acceso A Datos Desde Una Dll En C++
« Respuesta #5 en: Viernes 11 de Mayo de 2007, 15:35 »
0
no por dos razones
1- no acostumbro a utilizar ado
2- no acostumbro a utilizar C


busca en google tutotiales de ADO o en MSDN
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io