sqlite3 C API, содержащий две базы данных, указатели обеих баз одинаковы - PullRequest
2 голосов
/ 28 февраля 2012

Я использую C sqlite3 C API и имею две базы данных в моем проекте. они называются EPG и база данных REC соответственно. Я открываю их, используя функции с именем

     re_db_epg_init();
     re_db_rec_init();

коды обоих из них следующие:

re_db_epg_init ()

  void re_epg_db_init(void)
{
int status = sqlite3_initialize();

s_dbepg_path=re_dbepg_get_path(); //get the path of the database

//openrecDB

   status=sqlite3_open_v2(s_dbepg_path,&s_re_dbepg,SQLITE_OPEN_READONLY,NULL);
//check status
  if(status!=SQLITE_OK){
  printf("\n\nerror occured in opening epg database \n");
   exit(0);
             }

 status=sqlite3_extended_result_codes(s_re_dbepg,1);
  printf("\n\nstatus for opening the epg db is = %d \n",status);

   }

и re_db_rec_init ()

    void re_rec_db_init(void)
  {
  int status;     
  s_dbrec_path=re_dbrec_get_path();

   status=sqlite3_open_v2(s_dbrec_path,&s_re_dbrec,SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE,NULL);
    //check status
      if(status!=SQLITE_OK){
   printf("\n\nerror occured in opening rec database \n");
exit(0);   
}


status=sqlite3_extended_result_codes(s_re_dbrec,1);
printf("\n\nstatus for opening the rec db is = %d \n",status);
}

Поэтому, когда я вызываю функции, у меня должно быть два указателя s_re_dbepg, s_re_dbrec, которые действуют как дескрипторы для двух баз данных. Но когда я их распечатываю, они дают одинаковое значение (какое-то случайное шестнадцатеричное значение). поэтому я могу выполнять все операции с базой данных EPG, тогда как на второй все мои операции не выполняются. Я действительно не знаю, почему указатели дают одинаковое значение. Есть ли способ исправить это так, чтобы обе мои БД работали без сбоев?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...