Problème lecture sequentielle avec dbopen

Problème lecture sequentielle avec dbopen - C - Programmation

Marsh Posté le 23-04-2010 à 17:32:20    

Bonjour,
 
Je ne comprends pas pourquoi le petit programme de test ci-dessous me retourne la liste entière des entrées ?
j'obtiens des résultats corrects avec db->get mais pas avec db->seq ?  
merci beaucoup de votre aide.
 
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <db_185.h>
 
int main()
{
 DB *db;
 DBT key,data;
 char bkey[1000],bdata[1000];
 int i;
 
 unlink("test.db" );
 db = dbopen("test.db", O_CREAT|O_RDWR, 0644, DB_BTREE, NULL);
 key.data = bkey;
 data.data = bdata;
 key.size=4;
 data.size=6;
 for ( i = 0; i < 10; i++)
 {
  sprintf(bkey,"key%d",i);
  sprintf(bdata,"data%d",i);
 
  db->put(db,&key,&data,0);
 }
 db->close(db);
 
 db = dbopen("test.db", O_RDONLY, 0, 0, NULL);
 
 sprintf(bkey,"key3" );
 
 while (!db->seq(db,&key,&data,R_NEXT))
 {
  printf("%s\n",data.data);
 }
}

Reply

Marsh Posté le 23-04-2010 à 17:32:20   

Reply

Marsh Posté le 23-04-2010 à 18:28:16    

J'ai finit par trouver ...
pour info : il faut préciser R_DUP à l'ouverture ...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed