• 使用mysql C语言API编写程序—MYSQL数据库查询操作


    //MYSQL_RES保存查询结构

    MYSQL_RES* result_ = NULL;

    int error_code = 0;                         //保存错误码

    char error_info[1024] = '\0';               //保存错误信息

     

     

     

    //mysql数据库进行查询操作:

     

    char query_sql[1024] = "select * from db_name.table_name";          //构建查询sql语句

     

    if(result_ != NULL)                        //防止之前已经被使用过(所有的使用,在使用前都要判空)

    {

          mysql_free_result(result_);

          result_ = NULL;

    }

     

    if(link_ == NULL)                          //防止没有链接

    {

             //重连,按照建立mysql数据库链接的方法进行建立,前面的blog中有讲到

    }

     

     

     

    //执行sql查询

    if(mysql_query(link_,query_sql) != 0)

    {

             //查询失败

             error_code = mysql_errno(link_);                      //获取错误码

             strncpy(error_info,mysql_error(link_),1024);          //获取错误信息

     

             if((error_code == 2013) || (error_code == 2006))      //2006 mysql服务器不可用,2013查询过程中,丢失链接

             {

                 //重链,按照建立mysql数据库链接的方法进行建立

                 if(//重链失败)

                 {

                       return false;

                 }

                //重链成功,再次查询

                if(mysql_query(link_,query_sql) != 0)

                {

                     //再次查询失败

                     error_code = mysql_errno(link_);

                     strncpy(error_info,mysql_error(link_),1024);

                     //返回错误

                     return false;

                }

     

                error_code = 0;//查询成功了。

             }

    }

    else

    {

          //查询成功

    }

     

     

     

    //查询成功,保存查询结果

    result_ = mysql_store_result(link_);

    if(result_ == NULL)

    {

         error_code = mysql_errno(link_);                    //获取错误码

         strncpy(error_info,mysql_error(link_),1024);           //获取错误信息

     

     

         //返回错误                                      

         return false;

    }

     

     

     

    //获取查询结果的行数(记录数)

    return mysql_num_rows(result_);

     

     

     

    //获取查询结果的字段数

     

    return mysql_num_fields(result_);

     

     

    //获取查询结果的各个字段的字段名称

    MYSQL_FIELD  *fields;                              //保存字段名字信息

    unsing int  num_fields;

    unsigned int  i;

    num_fields = mysql_num_fields(result);             //获取查询结果中,字段的个数

     

    fields = mysql_fetch_fields(result);               //获取查询结果中,各个字段的名字

    for(i = 0; i < num_fields;i++)

    {

           printf("field  %u  is  %s\n",i,fields[i].name);

    }

     

     

    //获取查询出来的结果,即遍历查询到的每一行记录

    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 = NULL;

          lengths = mysql_fetch_lengths(result_);     //获取每一个记录行中,每一个字段的长度,在lengths数组中。

          for( i = 0; i < num_fields; i++)

          {

                printf("数据长度%u \t  数据内容%s",lengths[i],row[i]?row[i]:"NULL");

          }

          printf("\n");

    }

     

     

     

    //释放资源,断开链接

    if(result_ != NULL)

    {

         mysql_free_result(result_);

         result_  = NULL;

    }

    if(link_ != NULL)

    {

         mysql_close(link_);

         link_ = NULL;

    }

    原文:http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520113287814447/

  • 相关阅读:
    eclipse export runnable jar(导出可执行jar包) runnable jar可以执行的
    mave常用指令
    771. Jewels and Stones珠宝数组和石头数组中的字母对应
    624. Maximum Distance in Arrays二重数组中的最大差值距离
    724. Find Pivot Index 找到中轴下标
    605. Can Place Flowers零一间隔种花
    581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况
    747. Largest Number At Least Twice of Others比所有数字都大两倍的最大数
    643. Maximum Average Subarray I 最大子数组的平均值
    414. Third Maximum Number数组中第三大的数字
  • 原文地址:https://www.cnblogs.com/ymy124/p/2457730.html
Copyright © 2020-2023  润新知