打印记录替代方式(Mysql + C)

时间:2011-09-20 08:16:17

标签: mysql c

有没有办法使用C?

直接在Mysql中显示查询内容

我的意思是: 通过mysql shell如果我输入:SELECT * FROM table_name;我以一种整洁和格式化的方式获得查询结果。

如果我想使用Api C做同样的事情,我必须编写几行代码,最终结果远非好看(至少这是我的个人经历)

例如:

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 :(得分:0)

首先,没有直接打印格式化显示的方法。你可以做的是使用

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

找出列的最大宽度,以及相应的数据空间。