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


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com