c 编程 mysql结果集_使用mysql C语言API编写程序—MYSQL数据库查询操作(执行查询操作,获取查询结果的字段数,记录行数,...
//MYSQL_RES保存查詢結(jié)構(gòu)
MYSQL_RES*
result_ = NULL;
int
error_code = 0; //保存錯(cuò)誤碼
char
error_info[1024] = '\0'; //保存錯(cuò)誤信息
//對(duì)mysql數(shù)據(jù)庫(kù)進(jìn)行查詢操作:
char
query_sql[1024] = "select * from db_name.table_name";
//構(gòu)建查詢sql語(yǔ)句
if(result_
!= NULL) //防止之前已經(jīng)被使用過(guò)(所有的使用,在使用前都要判空)
{
mysql_free_result(result_);
result_
= NULL;
}
if(link_
== NULL) //防止沒(méi)有鏈接
{
//重連,按照建立mysql數(shù)據(jù)庫(kù)鏈接的方法進(jìn)行建立,前面的blog中有講到
}
//執(zhí)行sql查詢
if(mysql_query(link_,query_sql)
!= 0)
{
//查詢失敗
error_code
= mysql_errno(link_); //獲取錯(cuò)誤碼
strncpy(error_info,mysql_error(link_),1024);
//獲取錯(cuò)誤信息
if((error_code
== 2013) || (error_code == 2006)) //2006
mysql服務(wù)器不可用,2013查詢過(guò)程中,丟失鏈接
{
//重鏈,按照建立mysql數(shù)據(jù)庫(kù)鏈接的方法進(jìn)行建立
if(//重鏈?zhǔn)?
{
return
false;
}
//重鏈成功,再次查詢
if(mysql_query(link_,query_sql)
!= 0)
{
//再次查詢失敗
error_code
= mysql_errno(link_);
strncpy(error_info,mysql_error(link_),1024);
//返回錯(cuò)誤
return
false;
}
error_code
= 0; //查詢成功了。
}
}
else
{
//查詢成功
}
//查詢成功,保存查詢結(jié)果
result_
= mysql_store_result(link_);
if(result_
== NULL)
{
error_code
= mysql_errno(link_); //獲取錯(cuò)誤碼
strncpy(error_info,mysql_error(link_),1024);
//獲取錯(cuò)誤信息
//返回錯(cuò)誤
return
false;
}
//獲取查詢結(jié)果的行數(shù)(記錄數(shù))
return
mysql_num_rows(result_);
//獲取查詢結(jié)果的字段數(shù)
return
mysql_num_fields(result_);
//獲取查詢結(jié)果的各個(gè)字段的字段名稱
MYSQL_FIELD
*fields; //保存字段名字信息
unsing
int num_fields;
unsigned
int i;
num_fields
= mysql_num_fields(result); //獲取查詢結(jié)果中,字段的個(gè)數(shù)
fields
= mysql_fetch_fields(result); //獲取查詢結(jié)果中,各個(gè)字段的名字
for(i =
0; i < num_fields;i++)
{
printf("field
%u is %s\n",i,fields[i].name);
}
//獲取查詢出來(lái)的結(jié)果,即遍歷查詢到的每一行記錄
MYSQL_ROW
row; //保存行記錄信息
unsigned
int num_fields;
unsigned
int i;
num_fields
= mysql_num_fields(result_);
while((row
= mysql_fetch_row(result_))) //遍歷查詢結(jié)果中的各行記錄
{
unsigned
long *lengths = NULL;
lengths
= mysql_fetch_lengths(result_); //獲取每一個(gè)記錄行中,每一個(gè)字段的長(zhǎng)度,在lengths數(shù)組中。
for( i
= 0; i < num_fields; i++)
{
printf("數(shù)據(jù)長(zhǎng)度%u
\t 數(shù)據(jù)內(nèi)容%s",lengths[i],row[i]?row[i]:"NULL");
}
printf("\n");
}
//釋放資源,斷開(kāi)鏈接
if(result_ != NULL)
{
mysql_free_result(result_);
result_ = NULL;
}
if(link_ != NULL)
{
mysql_close(link_);
link_ = NULL;
}
總結(jié)
以上是生活随笔為你收集整理的c 编程 mysql结果集_使用mysql C语言API编写程序—MYSQL数据库查询操作(执行查询操作,获取查询结果的字段数,记录行数,...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql 配置多个数据库连接_总结My
- 下一篇: mysql老是自动停止_ecs云服务器