有没有办法使用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
任何人都可以帮助我吗?。
答案 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);
找出列的最大宽度,以及相应的数据空间。