BERKELEY DB

24 views
Skip to first unread message

Damián

unread,
Oct 28, 2010, 7:33:06 PM10/28/10
to C Talks
Hola gente, necesito ayuda para instalar las Berkeley DB en visual
studio 2005. Descargué el archivo db-5.0.21.msi, lo instalé pero no
puedo hacerlo andar en el visual. En la documentación dice que compile
un archivo Berkeley_DB.sln pero en mi directorio no existe, en ese
directorio hay uno BDB_dotNet_examples.sln y otro
Berkeley_DB_examples.sln. Ayuda por favor!!

Gaston J. Sosa

unread,
Oct 28, 2010, 7:58:20 PM10/28/10
to c-t...@googlegroups.com
En la imagen del xp para el tp de operativos ya está la Berkeley db, tenés
que copiarte las carpetas bin lib e include a tu proyecto... yo lo leí del
foro de operativos como hacer:
http://www.tpsosutnfrba.com.ar/foro/t-berkeley-db

te paso un ejemplito que pude hacer andar bastante choto de unas ppt que vi
por ahí:
---------------------

#pragma comment(lib,"libdb48d.lib")

#include <db.h>
#include "ClaseBD.cpp"
#include <string.h>

void main()
{
ClaseBD bd;
bd.bdGrabar(24197887, "Gaston");
bd.bdGrabar(24197888, "Gaston2");
bd.bdGrabar(24197889, "Gaston3");

char* nom;
nom = bd.bdLeer(24197889);
nom = bd.bdLeer(24197887);
nom = bd.bdLeer(24197888);
}
---------------------------------------------

#pragma comment(lib,"libdb48d.lib")

#include <db.h>
#include <string.h>
class ClaseBD
{
private:
DB *dbp;
u_int32_t flags;
int ret;

public:

ClaseBD::ClaseBD(void)
{
ret = db_create(&dbp, NULL, 0);

if( !ret )
{
flags = DB_CREATE;

ret = dbp->open(dbp,
NULL,"BDBerkeley.db",NULL, DB_BTREE, flags, 0);

/*
if(!ret)
{
if(dbp != NULL)
dbp->close(dbp,0);
}
*/
}
}


void bdGrabar(long dni, char *nombre)
{
DBT key,data;

memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));


key.data = &dni;
key.size = sizeof(long);
data.data = nombre;
data.size = strlen(nombre) + 1;

ret = dbp->put(dbp, NULL, &key, &data,
DB_NOOVERWRITE);

if (ret == DB_KEYEXIST)
{
dbp->err(dbp, ret, "La clave %d ya
existe!\n", dni);
}
}

char* bdLeer(long dni)
{
DBT key,data;

memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));


char nombre[50];

key.data = &dni;
key.size = sizeof(long);

data.data = nombre;
data.ulen = 50;
data.flags = DB_DBT_USERMEM;

dbp->get(dbp, NULL, &key, &data, 0);

return nombre;
}
};

La ppt que vi la baje del repositorio publico:
http://svn2.xp-dev.com/svn/public-shared-tp-so-utn-frba/

ahora me encuentro adaptando este ejemplo feo a lo que pide el tp.

Gaston J. Sosa


-----Mensaje original-----
De: c-t...@googlegroups.com [mailto:c-t...@googlegroups.com] En nombre de
Damián
Enviado el: jueves, 28 de octubre de 2010 20:33
Para: C Talks
Asunto: [C-Talks:84] BERKELEY DB

--
Recibiste este mensaje porque estás suscrito al Grupo "C Talks".
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a c-t...@googlegroups.com
Para anular la suscripción a este grupo, envía un mensaje a
c-talks+u...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com.ar/group/c-talks?hl=es.

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 5573 (20101028) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 5573 (20101028) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

Damián

unread,
Oct 30, 2010, 7:47:56 AM10/30/10
to C Talks
Bueno, muchas gracias. Voy a ver cómo lo hago. Yo quería instalar la
Berkeley en el visual studio de mi máquina, no probé con el de la vm.
Gracias por tu respuesta

Matías Dumrauf

unread,
Oct 30, 2010, 11:39:06 AM10/30/10
to c-t...@googlegroups.com
En principio, la Cátedra recomienda utilizar la VM para evitar conflicto entre versiones de las apis de desarrollo a utilizar.

La versión de Berkeley DB que utiliza la VM de Windows XP Professional es la 4.8.26. Si la quisieras descargar de manera oficial, no podrías ya que Oracle discontinuó ese release (podés chequearlo en este link donde desapareció la url de descarga). Sin embargo, la podés descargar de éste otro link: http://soft.softoogle.com/ap/berkeley-db-get-653.shtml.


Saludos y cualquier cosa, nos decís.

Matías Dumrauf

Marina Revelli

unread,
Nov 17, 2010, 12:44:58 PM11/17/10
to c-t...@googlegroups.com
Hola Matías,

Perdón si mi pregunta es tonta, pero yo me la descargué desde ese link pero es una carpeta que tiene todo. Yo me lo imaginaba iba ser una onda la libxml, y no entiendo muy bien cómo es el tema de la instalación. La VM no la puedo usar en mi máquina xq no la aguanta y anda a 2 por hora, así que por eso me interesa encontrar la forma de instalarla directo.

Matías Dumrauf

unread,
Nov 19, 2010, 12:19:11 PM11/19/10
to c-t...@googlegroups.com
Hola Marina, efectivamente tiene todo. Y ese TODO, es la api. Lógicamente durante el desarrollo puede pasar que no uses todas las funciones de la misma, pero pueden existir dependencias entre dlls.
La configuración es la misma que para libxml2.

Como explique varias veces: en las Propiedades de Configuración de tu proyecto, podés referenciar a la api con paths relativos y copiando el contenido de las carpetas bin, include y lib a tu proyecto. O bien, usar paths absolutos ya que en la VM de Windows XP, Berkeley DB está instalada siempre en el mismo lugar.

Las dos son válidas. La ventaja de la primera es que si quisieras probar tu proyecto en otra máquina, no tenés que instalar la api. Y la ventaja de la segunda, es que tu proyecto va a pesar muchísimo menos (tanto menos como el peso de la api, que serán unos 20 megas).


Cualquier cosa, me decís.

Saludos,

Matías
Reply all
Reply to author
Forward
0 new messages