c 直接访问mysql_LINUX c 语言访问MYSQL

#include

#include

#include

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_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接。在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。

参数的指定方式如下:

第1个参数应是已有MYSQL结构的地址。调用mysql_real_connect()之前,必须调用mysql_init()来初始化MYSQL结构。通过mysql_options()调用,可更改多种连接选项。

“host”的值必须是主机名或IP地址。如果“host”是NULL或字符串"localhost",连接将被视为与本地主机的连接。如果操作系统支持套接字(Unix)或命名管道(Windows),将使用它们而不是TCP/IP连接到服务器。

“user”参数包含用户的MySQL登录ID。如果“user”是NULL或空字符串"",用户将被视为当前用户。在UNIX环境下,它是当前的登录名。在Windows ODBC下,必须明确指定当前用户名。

“passwd”参数包含用户的密码。如果“passwd”是NULL,仅会对该用户的(拥有1个空密码字段的)用户表中的条目进行匹配检查。这样,数据库管理员就能按特定的方式设置MySQL权限系统,根据用户是否拥有指定的密码,用户将获得不同的权限。

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_ROW mysql_fetch_row(MYSQL_RES *result)

检索一个结果集合的下一行。当在mysql_store_result()之后使用时,如果没有更多的行可检索时,mysql_fetch_row()返回NULL。当在mysql_use_result()之后使用时,当没有更多的行可检索时或如果出现一个错误,mysql_fetch_row()返回NULL。

在行中值的数量由mysql_num_fields(result)给出。如果row保存了从一个对用mysql_fetch_row()调用返回的值,指向该值的指针作为row[0]到row[mysql_num_fields(result)-1]来存取。在行中的NULL值由NULL指针指出。

在行中字段值的长度可以通过调用mysql_fetch_lengths()获得。空字段和包含NULL的字段长度都是 0;你可以通过检查该值的指针区分他们。如果指针是NULL,字段是NULL;否则字段是空的。

unsigned int mysql_field_count(MYSQL *mysql);

得到当前查询的数据库的表的列的数目,即这个表有多少列数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值