sqlite3 C API包含两个数据库,两个数据库的指针是相同的

时间:2012-02-28 09:59:38

标签: c database sqlite

我正在使用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数据库上执行所有操作,而在第二个上我的所有操作都失败了。我真的不知道为什么指针给出相同的值。有没有办法纠正这个问题,以便我的数据库运行顺畅?

0 个答案:

没有答案