C/Visual C - Conectar una DB a un DLL EN C

 
Vista:

Conectar una DB a un DLL EN C

Publicado por William Bonilla Madriz (2 intervenciones) el 06/10/2002 02:47:20
HOLA ,
Soy William Bonilla de Costa Rica y necesito de su ayuda.
Estoy desarrollando una aplicación DLL en Visual C versión 6.0. El DLL se
encuentra terminada, incluso, la información que recopila la envía a un
archivo de texto "TXT".
NECESITO enviar esa información NO a un TXT sino a una base de datos Access,
¿COMO SE PUEDE HACER? como se conecta una base de datos a un programa DLL
desarrollado en Visual C y salvar los datos??

Me pueden ayudar!!!!!!

Gracias,
Ing. William Bonilla
TEL.(506)399-5744
[email protected]

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Conexión y almacenamiento de datos en una base de datos Access desde una DLL

Publicado por Alejandro (913 intervenciones) el 24/03/2025 21:58:12
Hola William,

Para enviar información desde una DLL desarrollada en Visual C++ 6.0 a una base de datos de Access, puedes utilizar OLE DB o ADO (ActiveX Data Objects). A continuación, te proporcionaré un enfoque general sobre cómo hacerlo.

Pasos para conectar y guardar datos en una base de datos Access



1. Incluir las bibliotecas necesarias:
Asegúrate de incluir las bibliotecas necesarias para trabajar con ADO. Puedes necesitar agregar las siguientes líneas en tu archivo de código:

1
2
#include <afxdb.h> // Para MFC ODBC
#include <comdef.h> // Para ADO

2. Inicializar COM:
Antes de usar ADO, debes inicializar COM en tu DLL. Esto se hace generalmente en la función de inicialización de tu DLL.

1
CoInitialize(NULL);

3. Crear una conexión a la base de datos:
Utiliza ADO para establecer una conexión a tu base de datos Access. Aquí hay un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
HRESULT hr;
_ConnectionPtr pConnection;
_RecordsetPtr pRecordset;
 
// Inicializar COM
CoInitialize(NULL);
 
// Crear la conexión
hr = pConnection.CreateInstance(__uuidof(Connection));
if (SUCCEEDED(hr)) {
    // Cadena de conexión a la base de datos Access
    pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\ruta\\a\\tu\\base_de_datos.mdb;", "", "", adConnectUnspecified);
}

4. Insertar datos en la base de datos:
Una vez que tengas la conexión, puedes insertar datos en la base de datos. Aquí hay un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
// Crear un nuevo recordset
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset->Open("SELECT * FROM TuTabla", pConnection.GetInterfacePtr(), adOpenKeyset, adLockOptimistic, adCmdTable);
 
// Agregar un nuevo registro
pRecordset->AddNew();
pRecordset->Fields->Item["Campo1"]->Value = "Valor1"; // Cambia "Campo1" y "Valor1" según tu tabla
pRecordset->Fields->Item["Campo2"]->Value = "Valor2"; // Cambia "Campo2" y "Valor2" según tu tabla
pRecordset->Update(); // Guardar el nuevo registro

5. Cerrar la conexión:
No olvides cerrar el recordset y la conexión después de que hayas terminado de trabajar con la base de datos.

1
2
3
pRecordset->Close();
pConnection->Close();
CoUninitialize(); // Finalizar COM

Ejemplo completo



Aquí tienes un ejemplo completo de cómo podría verse tu función en la DLL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <afxdb.h>
#include <comdef.h>
 
extern "C" __declspec(dllexport) void GuardarDatosEnAccess() {
    CoInitialize(NULL);
 
    _ConnectionPtr pConnection;
    _RecordsetPtr pRecordset;
 
    HRESULT hr = pConnection.CreateInstance(__uuidof(Connection));
    if(SUCCEEDED(hr)) {
        pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\ruta\\a\\tu\\base_de_datos.mdb;", "", "", adConnectUnspecified);
 
        pRecordset.CreateInstance(__uuidof(Recordset));
        pRecordset->Open("SELECT * FROM TuTabla", pConnection.GetInterfacePtr(), adOpenKeyset, adLockOptimistic, adCmdTable);
 
        pRecordset->AddNew();
        pRecordset->Fields->Item["Campo1"]->Value = "Valor1";
        pRecordset->Fields->Item["Campo2"]->Value = "Valor2";
        pRecordset->Update();
 
        pRecordset->Close();
        pConnection->Close();
    }
 
    CoUninitialize();
}

Notas importantes


- Asegúrate de que la ruta a tu base de datos Access sea correcta.
- Cambia "TuTabla", "Campo1", "Campo2", "Valor1" y "Valor2" según la estructura de tu base de datos.
- Asegúrate de tener las referencias necesarias para ADO en tu proyecto.

¡Buena suerte con tu proyecto!

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar