Печать записей альтернативным способом (Mysql + C) - PullRequest
0 голосов
/ 20 сентября 2011

Есть ли способ непосредственного отображения содержимого запроса в Mysql с помощью C?

Что я имею в виду: через оболочку mysql, если я наберу: SELECT * FROM table_name; Я получаю результат запроса в аккуратном и отформатированном виде.

Если я хочу сделать то же самое, используя Api C, мне нужно написать несколько строк кодов, и конечный результат далеко не хорош (по крайней мере, это мой личный опыт) * ​​1005 *

Например:

void display_Table1(MYSQL *conn)
{
int jj,ii;


    char query[512];
    sprintf(query, "SELECT * FROM Table1 ;");          

    if (mysql_query (conn, query)) {
                printf("\nErrore query:\n");
        printf("%s", mysql_error(conn),"\n");

    result = mysql_store_result(conn);
    if (result) {
         num_rows = mysql_num_rows(result);     
         num_fields =mysql_num_fields(result);
         //printf("Number of rows=%u  Number of fields=%d \n", num_rows,num_fields);    
         //printf(" ");
        }
            else
            {
               printf("Result set is empty");
            }   

        // Print column headers

            fields = mysql_fetch_fields(result);

            for(jj=0; jj < num_fields; jj++)
            {
                printf("\n%s\t\t",fields[jj].name);
            }
            printf("\n\t ");


        // print query results

            while(row = mysql_fetch_row(result)) // row pointer in the result set
            {
                for(ii=0; ii < num_fields; ii++)
                {
                    printf("%s\t", row[ii] ? row[ii] : "NULL");  // Not NULL then print
                }
                printf("\n");
            }
    if(result)
            {
                mysql_free_result(result);
                result = NULL;
            }

}
}

Это сложная проблема для решения. Я получаю заголовки один за другим по вертикали.

Я также получаю Commands out of sync; you can't run this command now

Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 20 сентября 2011

Во-первых, нет прямого способа распечатать отформатированный дисплей. Что вы можете сделать, это использовать

MYSQL_FIELD *field = mysql_fetch_field (resultset);
col_len = field->max_length;
if(col_len < strlen(field->name))
    col_len = strlen(field->name);

, чтобы узнать максимальную ширину столбца и пространство данных соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...