#mysql #c #database #synchronization #connector
#mysql #c #База данных #синхронизация #соединитель
Вопрос:
Я создал базу данных с использованием MySQL, и теперь мне нужно запустить созданные мной хранимые процедуры, запрограммировав базовый клиент C, который запрашивает команду, и вызвать хранимые процедуры.
В частности, после входа в систему, хотя я не ввожу ’10’ для выхода из системы, моя программа запрашивает, какой SP я хочу вызвать. Это мой код:
void root_logged ()
{
while (true)
{
scanf ("%i",amp;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()
не используется должным образом
Комментарии:
1. Какая часть вашего кода выдает это сообщение об ошибке?
2.
result = mysql_store_result(conn)
, когда я вызываю процедуру во второй раз. Это потому, что приведенная ниже проверка оператора ifif result == NULL
возвращает код ошибки, произошедшей во времяmysql_store_result(result)
. Итак, я думаю, что у меня проблема с использованиемmysql_free_result()