Я пытаюсь использовать две базы данных для моего проекта.Одна из них уже создана и называется базой данных EPG, содержащей множество таблиц и записей.Другой - моя собственная база данных, называемая базой данных REC. Когда я открываю свою собственную базу данных, я хочу создать в ней таблицу.Итак, есть три функции, а именно:
re_rec_db_init();
create_table();
re_epg_db_init();
Код для re_db_db_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_rec_init - это другой путь, имя дескриптора и режим(SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE)
Далее, create_table () fn поможет мне создать другую таблицу в базе данных rec.Это выглядит примерно так:
void create_table(void)
{
int status;
char *sql_new;
char *zErr;
sql_new="create table if not exists test(Eventid VARCHAR(128) primary key,Title VARCHAR(128))";
status=sqlite3_exec(s_re_dbrec,sql_new,NULL,NULL,&zErr);
if(status==SQLITE_OK || status==SQLITE_DONE)
{
printf("\n\n table ready!! \n");
}
else
{
printf("\n\n table status: %d",status);
}
}
Я хочу, чтобы программа запросила в базе данных epg заданный заголовок и вернула Eventid.Но проблема возникает из-за этого метода create_tables.когда я позволю ему выполнить Eventid вернул ноль.Принимая во внимание, что, когда я закомментирую это, Eventid возвращается совершенно. Выходные данные для двух случаев:
case1: когда создается таблица
status for opening the rec db is = 0
table ready!!
enter the title to be queried:Looney Tunes
the entered title is:Looney Tunes
status for opening the epg db is = 0
success in reading the query!
Event id of the title is:(null) //wrong!
case2: когда create_table закомментирован
status for opening the rec db is = 0
enter the title to be queried:Looney Tunes
the entered title is:Looney Tunes
status for opening the epg db is = 0
success in reading the query!
Event id of the title is:00010006014124ed //correct result!
Я действительно не знаю, как это происходит. При чтении запроса я использую стандартные команды sqlite3_prepare_v2, sqlite3_step для получения идентификатора события.Пожалуйста, помогите мне
Спасибо