c mysql查询

在c程序中使用mysql需包含下面的头文件:
#include <mysql/mysql.h>

按顺序调用下面的函数:

mysql *mysql_init(MYSQL *mysql)

这个函数用来分配或者初始化一个MYSQL对象,用于连接mysql服务端。如果你传入的参数是NULL指针,它将自动为你分配一个MYSQL对象,如果这个MYSQL对象是它自动分配的,那么在调用mysql_close的时候,会释放这个对象。那么,这就有可能出现一个问题,就是,当你主动调用mysql_close之后,可能因为某些原因,又调用一次mysql_close,第二次调用,有可能因为mysql已经是野指针导致程序崩溃。另外,在我的实际运用过程中,有出现一些api调用过程中出错时,自动调用了mysql_close的情况。由于这种自动调用不会被程序感知,因此程序主动close的时候会导致崩溃。为了安全起见,建议不要让mysql_init api自动创建MYSQL对象,而由自己管理这个对象,并且传入地址让它完成初始化,这样,即使你多次调用close函数,也不会出现程序崩溃的现象。

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 *为mysql_init函数返回的指针,host为null或 localhost时链接的是本地的计算机,当mysql默认安装在unix(或类unix)系统中,root账户是没有密码的,因此用户名使用root,密码为null,当db为空的时候,函数链接到默认数据库,在进行 mysql安装时会存在默认的test数据库,因此此处可以使用test数据库名称,port端口为0,使用 unix连接方式,unix_socket为null时,表明不使用socket或管道机制,最后一个参数经常设置为0

int mysql_select_db(MYSQL *mysql, const char *db)

使由db指定的数据库成为由mysql指定的连接上的默认数据库(当前数据库)。在后续查询中,该数据库将是未包含明确数据库区分符的表引用的默认数据库。返回0表示成功,非0值表示出现错误。(若在mysql_real_connect中已指定db,此函数也可不用调用)

int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)

执行由“query”指向的SQL查询,它应是字符串长度字节“long”。正常情况下,字符串必须包含1条SQL语句,而且不应为语句添加终结分号(’;’)或“\g”。如果允许多语句执行,字符串可包含由分号隔开的多条语句。
如果查询成功,返回0。如果出现错误,返回非0值。

int mysql_query(MYSQL *mysql, const char *query)

执行由“Null终结的字符串”查询指向的SQL查询。正常情况下,字符串必须包含1条SQL语句,而且不应为语句添加终结分号(’;’)或“\g”。如果允许多语句执行,字符串可包含多条由分号隔开的语句。mysql_query()不能用于包含二进制数据的查询,应使用mysql_real_query()取而代之(二进制数据可能包含字符’\0’,mysql_query()会将该字符解释为查询字符串结束)。

MYSQL_RES *mysql_store_result(MYSQL *mysql)

将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中。如果查询未返回结果集,mysql_store_result()将返回Null指针.如果读取结果集失败,mysql_store_result()还会返回Null指针。

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

检索结果集的下一行

void mysql_close(MYSQL *mysql)

关闭前面打开的连接。如果句柄是由mysql_init()或mysql_connect()自动分配的,mysql_close()还将解除分配由mysql指向的连接句柄。

const char *mysql_error(MYSQL *mysql)

对于由mysql指定的连接,对于失败的最近调用的API函数,mysql_error()返回包含错误消息的、由Null终结的字符串。如果该函数未失败,mysql_error()的返回值可能是以前的错误,或指明无错误的空字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值