Команды из синхронизации MySQL при повторном вызове хранимой процедуры в C - PullRequest
0 голосов
/ 11 марта 2019

Я создал базу данных, используя 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() не используются должным образом

...