#include<stdio.h>
#include<stdlib.h>
#include<mysql.h>
int main(void)
{
//MYSQL 链接指针
MYSQL *conn_ptr;
int res;
//执行的查询语句
char querySql[100] = "select fname,age from children";
//得到查询结果集
MYSQL_RES *res_ptr;
//得到的查询结果
MYSQL_ROW sqlrow;
//初始化链接数据库
conn_ptr = mysql_init(NULL);
if(!conn_ptr)
{
fprintf(stderr,"mysql init error\n");
exit(1);
}
//链接数据库
conn_ptr = mysql_real_connect(conn_ptr,"localhost",
"root","123","test",0,NULL,0);
if(conn_ptr)
{
printf("connect sucessful\n");
}
else
{
printf("connect failture\n");
fprintf(stderr,"num is %d error is %s\n",
//获得出错的行号和出错信息 mysql_errno(conn_ptr),mysql_error(conn_ptr));
exit(1);
}
//执行SQL查询语句,不得到结果。可以执行删除和插入 等
res = mysql_query(conn_ptr,querySql);
if(0 == res)
{
printf("Data num is %d\n",
//可以得到查询操作影响的行号 (int)mysql_affected_rows(conn_ptr));
}
else
{
fprintf(stderr,"num is %d erros is %s\n",
mysql_errno(conn_ptr),mysql_error(conn_ptr));
exit(1);
}
//得到查询操作的结果集
res_ptr = mysql_use_result(conn_ptr);
if(res_ptr)
{ //处理每个结果,返回的是每行的结果
while((sqlrow = mysql_fetch_row(res_ptr)))
{
unsigned int num = 0;
//对每行结果进行输出
while(num < mysql_field_count(conn_ptr))
{
printf("row is:%s\n",sqlrow[num]);
num++;
}
}
}
//释放结果集指针
mysql_free_result(res_ptr);
//关闭数据库
mysql_close(conn_ptr);
exit(0);
}MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
MYSQL_RES *mysql_use_result(MYSQL *mysql)
对于成功检索数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN),必须调用mysql_store_result()或mysql_use_result()。mysql_use_result()将初始化结果集检索,但并不像mysql_store_result()那样将结果集实际读取到客户端。它必须通过对mysql_fetch_row()的调用,对每一行分别进行检索。这将直接从服务器读取结果,而不会将其保存在临时表或本地缓冲区内,与mysql_store_result()相比,速度更快而且使用的内存也更少。客户端仅为当前行和通信缓冲区分配内存,分配的内存可增加到max_allowed_packet字节。
在行中字段值的长度可以通过调用mysql_fetch_lengths()获得。空字段和包含NULL的字段长度都是 0;你可以通过检查该值的指针区分他们。如果指针是NULL,字段是NULL;否则字段是空的。
unsigned int mysql_field_count(MYSQL *mysql);
得到当前查询的数据库的表的列的数目,即这个表有多少列数据。
本文出自 “风清扬song” 博客,请务必保留此出处http://2309998.blog.51cto.com/2299998/1365989
LINUX c 语言访问MYSQL,布布扣,bubuko.com
原文:http://2309998.blog.51cto.com/2299998/1365989