elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Ejecución asincrona de consultas mediante ADO C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecución asincrona de consultas mediante ADO C++  (Leído 250 veces)
SubAtomicParticula

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Ejecución asincrona de consultas mediante ADO C++
« en: 3 Agosto 2017, 07:35 »

Saludos, tengo problemas para ejecutar consultas con ADO C++. Uso ADO en C++ importando la libreria:

#import "C:\\Program Files (x86)\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF", "EndOfFile")

El problema parece ser que las consultas se ejecutan de manera asincrona. Al eliminar un registro de la base de datos y volver a cargar la tabla no se refleja el cambio hasta pasado algún tiempo. Esto ocurre al usar el método Command->Execute(NULL, NULL, adCmdText | adExecuteNoRecords);

La conexión a la Base de datos la configuro de la siguiente manera:

// CadenaDeConexion = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet
// OLEDB:Database Locking Mode=1;Data Source=Base de datos.mdb;Mode=Share Deny None;Jet
// OLEDB:Engine Type=3;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet
// OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without
// Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System
// Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet
// OLEDB:Global Bulk Transactions=1"
CoInitialize(NULL);
Conexion.CreateInstance(__uuidof(ADO::Connection));
Conexion->Open(CadenaDeConexion, L"", L"", adConnectUnspecified);
Comando.CreateInstance(__uuidof(Command));
Comando->ActiveConnection = Conexion;

Para consultas de ejecucion uso el método:
void DB::EjecutaSQL(wchar_t SQL){
   Comando->CommandText = SQL;
   Comando->Execute(NULL, NULL, adCmdText | adExecuteNoRecords);
}
Y para obtener el recordset uso el método:
void DB::CreaTabla(wchar_t SQL) {
   Tabla.CreateInstance(__uuidof(ADO::Recordset));
   Tabla->Open((wchar_t*)SQL, (IDispatch *)Conexion, adOpenKeyset, adLockOptimistic,
   adCmdText);
}
Estoy bastante perdido, si alguién domina ADO se agradecería alguna indicación.

Gracias, un saludo.


En línea

SubAtomicParticula

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Ejecución asincrona de consultas mediante ADO C++
« Respuesta #1 en: 3 Agosto 2017, 13:41 »

Me auto respondo:

El problema está en que hay que borrar los punteros a Conexion y Tabla (_ConnectionPtr, _RecordsetPtr) y volver a crearlos e inicializarlos en cada consulta o ejecucion.

Un saludo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consultas cgi
Desarrollo Web
D1e6o! 2 857 Último mensaje 18 Noviembre 2004, 08:26
por D1e6o!
consultas
Hacking Wireless
stick 1 584 Último mensaje 15 Diciembre 2006, 18:42
por rh3nt0n
consultas
Programación Visual Basic
::: Devil ::: 2 729 Último mensaje 19 Junio 2007, 19:07
por ::: Devil :::
¿que técnica asíncrona debo usar?
.NET
ABDERRAMAH 5 1,205 Último mensaje 19 Enero 2013, 13:59
por ABDERRAMAH
¿Como reproducir un sonido desde wxWidgets de forma asíncrona? [Solucionado]
Programación C/C++
wiserlander 3 1,251 Último mensaje 1 Abril 2013, 11:10
por wiserlander
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines