db_test数据库里面包含username表表包含ID,username两个字段。里面数据位
100 JACK
102 MARK
186 ADDREW
C程序代码如下
#include <mysql/mysql.h>
#include <stdio.h>
void main()
{
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query = "select * from username";
int t,r;
mysql_init(mysql);
if (!mysql_real_connect(mysql,"localhost","root","123456","db_test",0,NULL,0))
{
printf("Error connecting to database:%s\n",mysql_error(mysql));
}
else 
printf("connected...\n");
t = mysql_query(mysql,query);
if (t)
{
printf("Error making to query:%s\n",mysql_error(mysql));
}
else
{
printf("Query made...\n");
res = mysql_use_result(mysql);
if (res)
{
for (r=0;r<=mysql_field_count(mysql);r++)
{
row = mysql_fetch_row(res);
if (row < 0 ) break;
for (t=0;t<mysql_num_fields(res);t++)
printf("%s ",row[t]);
printf("\n");
}
}
mysql_free_result(res);
}
mysql_close(mysql);
}
    
 
 
页首          
 
显示帖子 : 

解决方案 »

  1.   

    编译运行后的结果为:
    100 JACK
    102 MARK
    186 ADDREW
    段错误
    我不知道最后那个段错误是哪里有问题
      

  2.   

    for (r=0;r<=mysql_field_count(mysql);r++)这里的R想实现什么?你取列数是什么含义?
      

  3.   

    mysql_field_count 这个函数返回的是什么?
    mysql_num_fields( 这个函数又是什么?建议查一下手册, 
    目前我还没明白你程序的逻辑。
      

  4.   

    错在这里,for (r=0;r<=mysql_field_count(mysql);r++)
    中间条件应该是<,而不是<=
    显然会造成越界的错误。也就是段错误。
      

  5.   

    又看了一遍code, for (r=0;r<=mysql_field_count(mysql);r++)
    这一行根本就不应该要用while (mysql_fetch_row(res))
    {
    for (t=0;t<mysql_num_fields(res);t++)
    printf("%s ",row[t]);
    printf("\n");
    }
      

  6.   

    不知道楼主的程序是做什么的。下面是MYSQL手册中的例子。MYSQL_ROW row;
    unsigned int num_fields;
    unsigned int i;num_fields = mysql_num_fields(result);
    while ((row = mysql_fetch_row(result)))
    {
       unsigned long *lengths;
       lengths = mysql_fetch_lengths(result);
       for(i = 0; i < num_fields; i++)
       {
           printf("[%.*s] ", (int) lengths[i],
                  row[i] ? row[i] : "NULL");
       }
       printf("\n");
    }
      

  7.   


    你不能稍改一下吗?我帖的只是基本思路。while ((row = mysql_fetch_row(res)))