Leer y escribir en archivo .mdb de access con C++

Iniciado por cassiel83, 8 Marzo 2013, 14:40 PM

0 Miembros y 1 Visitante están viendo este tema.

cassiel83

Buenas tardes a todos, tengo un programa en C++ que prepara unos archivos y al final crea un listado de estos, el problema es que el ultimo paso que me falta es escribir los datos del listado en una de las tablas que se encuentra dentro de una base de datos .MDB con contraseña, creada en access.
He estado leyendo en algunos foros y paginas de microsoft que dependiendo del tipo de base de datos (sea ADO, ADO.NET, ODBC, OLE, etc) hay que anexar a la libreria del codigo C++ el controlador .dll para el tipo de base de datos; pero yo solo se que es un archivo .MDB y que se ha creado en access.

Por lo que he visto hay muchos tipos de bases de datos e incluso programas que las gestionan y que tienes que conectarte al programa para poder acceder a los datos y eso, pero lo que yo tengo es un simple archivo .MDB que quisiera poder abrir y escribir (Si, soy un cero a la izquierda en bases de datos).

Alguien podria darme alguna pista de como se hace?
Muchas gracias de antemano.



EI: juntando mensajes.



Hola, publico un poco mi avance por si a alguien le sirve.

Estoy haciendo un programa con windows forms en visual c++ 2008 y hasta ahora he conseguido abrir la bd con contraseña y crear una tabla desde mi programa.

Lo que hay que hacer es lo siguiente:

declarar al principio del programa principal (no se si esta bien dicho declarar):

using namespace System::Data::OleDb;

//Luego en el boton que quieras que realize la tarea:

OleDbConnection^ conexión = gcnew OleDbConnection();
conexión->ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=mibasedatos.MDB;Jet OLEDB:Database Password=contraseña";
conexión->Open();

//el provider depende del tipo de bd a la que te quieres conectar. Hay varios parametros que podemos pasar a ConnectionString (Provider, Data Source, Database Password), lo que no entiendo es por que en la pagina de microsoft solo mencionan un par de ellos y hay que buscarse la vida y ver cual es el que uno necesita. lo de Jet OLEDB:Database Password lo encontre de casualidad googleando.

//luego:
         
String^ strcomando = "CREATE TABLE tabla1 (nombres CHAR, apellidos CHAR);";

//el comando CREATE TABLE es de sql access que hay que utilizar y pasarselo al programa para que cree la tabla.
         
OleDbCommand^ comando = gcnew OleDbCommand(strcomando,conexión);
comando->ExecuteReader();

conexión->Close();


Ahora me falta seguir buscando los comandos de sql access para escribir o borrar cosas en las tablas de mi bd.
Un saludo.

flony

si un problema no tiene solucion entonces no es un problema...es algo inevitable


aguml

si de verdad sql access se parece a sql, yo no usaria CREATE TABLE usaria CREATE TABLE IF NOT EXIST ya que de la otra manera me da en la nariz que igual y te pisaba tu tabla y siempre te apareceria vacia mientras con lo que te digo se anexarian al final los nuevos datos. Otra cosa que te faltaria seria un id auto incremental unico. Asi de cabeza no te se decir a ciencia cierta pero seria algo asi: integer id unique asc. No te puedo ayudar mucho mas pero te voy a preguntar algo, si usas sql para crear la tabla ¿Por que no pruebas a usar lo mismo para escribir y leer en ella? He mirado el objeto oledbcommand en la msdn y curiosamente tiene toda la pinta de usarse para lo mismo que se usa en sql y ademas te dice que es un metodo implementado de sql. Yo tengo un fuente donde hago cosas como busquedas, crear tablas, editar registro, eliminar registro, y añadir registro. Es en c++builder y usando sqlite pero igual te puede orientar viendo como hago todo eso. Yo uso prepare_v2 porque es el que te aconsejan los creadores de sqlite pero tambien esta prepare y creo recordar que necesita menos parametros que el que yo usé. Ya me cuentas que tal.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón