zoukankan      html  css  js  c++  java
  • 使用mysql C语言API编写程序—MYSQL数据库查询操作

    (转载)http://www.cnblogs.com/ymy124/archive/2012/04/19/2457730.html

    //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/

  • 相关阅读:
    UVA1452|LA4727-----Jump------经典的约瑟夫公式的变形(DP)
    ORM框架Hibernate (四) 一对一单向、双向关联映射
    heaters
    对SIGQUIT的实验 & Java dump
    【Todo】单例模式各种实现方式及并发安全
    【转载】Spark系列之运行原理和架构
    git本地文件回滚操作
    Java异常与运行时异常,以及与线程的关系
    Callable与Future、FutureTask的学习 & ExecutorServer 与 CompletionService 学习 & Java异常处理-重要
    Linux系统负载排查
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3050103.html
Copyright © 2011-2022 走看看