Я создал базу данных, используя mySQL, и теперь мне нужно запустить созданные мной хранимые процедуры, запрограммировать базовый клиент C, который запрашивает команду, и вызвать хранимые процедуры.
В частности, послелогин, в то время как я не ввожу '10', чтобы выйти, моя программа запрашивает, какой SP я хочу вызвать.Это мой код:
void root_logged ()
{
while (true)
{
scanf ("%i",&cmd2);
if (cmd2 == 2)
{
show_exams();
}
else if (cmd2 == 10)
{
do_logout();
break;
}
}
}
void show_exams ()
{
strcpy(query,"call show_exams()"); //call mySQL SP
mysql_query (conn,query);
result = mysql_store_result(conn);
if (result == NULL)
{
finish_with_error(conn, "errore");
}
printf ("check 2:\n");
num_fields = mysql_num_fields(result);
printf ("check 3 \n");
while ((row = mysql_fetch_row(result)))
{
for(int i = 0; i < num_fields; i++)
{
if (i == 0)
{
while(field = mysql_fetch_field(result))
{
printf( "| %s ", field->name);
}
printf("\n");
}
printf(" %s ", row[i] ? row[i] : "NULL");
}
printf ("\n");
}
mysql_free_result(result);
}
Если я введу «2» в первый раз после входа в систему, он правильно покажет мне всю таблицу «экзамены» со всеми данными, сохраненными в.
После результата программа запрашивает другую команду.Если я снова введу 2 (или любой другой cmd кроме 10 для выхода из системы), это выдаст мне эту ошибку.
Команды не синхронизированы;Вы не можете запустить эту команду сейчас
Есть идеи?Я думаю, проблема в том, что about mysql_store_result()
и mysql_free_result()
не используются должным образом