怎么用c语言定义mysql变量_C语言定义的操作mysql数据库的接口

这篇博客介绍了如何使用C语言定义和操作MySQL数据库的接口。包括初始化数据库参数、更新数据库、查询数据库以及释放查询结果占用的内存等关键步骤。
摘要由CSDN通过智能技术生成

#include

#include //#include /* windows系统要加上这个 */#include

#include "operateDb.h"

#include "status.h"

/*

* 内部数据

*/

static char const *localhost = NULL; //主机名

static char const *userName = NULL;  //mysql用户名

static char const *password = NULL;  //它的密码

static char const *databaseName = NULL; //所要操作的数据库

/*

* 外部接口

*

*

* 设置访问数据库参数

* _localhost -- 访问数据库的主机名

* _userName -- 访问数据库的用户名

* _password -- 对应的密码

* _databaseName -- 要操作的数据库名字

* 返回结果状态值,如果没有异常返回OK;否则返回ERROR

*/

STATUS

InitDbParms( char const *_localhost, char const *_userName, char const *_password, char const *_databaseName )

{

if(_localhost == NULL) //检查参数是否有效

{

fprintf(stdout, "传递给函数InitDbParms的参数_localhost无效。\n");

return ERROR;

}

if(_userName == NULL)

{

fprintf(stdout, "传递给函数InitDbParms的参数_userName无效。\n");

return ERROR;

}

if(_databaseName == NULL)

{

fprintf(stdout, "传递给函数InitDbParms的参数_databaseName无效。\n");

return ERROR;

}

localhost = _localhost;

userName = _userName;

password = _password;

databaseName = _databaseName;

return OK;

}

/*

* 操作数据库

* commandString -- 存放SQL操作命令

* 如果操作成功返回OK;否则返回ERROR

*/

STATUS

UpdateDatabase( char const *commandString )

{

MYSQL the_conn;

if(commandString == NULL) //检查参数是否有效

{

fprintf(stdout, "传递给函数UpdateDatabase的参数commandString无效。\n");

return ERROR;

}

if( mysql_init( &the_conn ) == NULL ) //获取本次连接的句柄

{

fprintf(stdout, "Error at mysql_init().\n");

exit( EXIT_FAILURE );

}

if( mysql_real_connect( &the_conn, localhost, userName, password, databaseName, MYSQL_PORT, NULL, 0 ) == NULL ) //连接数据库

{

fprintf(stdout, "Error at mysql_real_connect().\n");

exit( EXIT_FAILURE );

}

if( mysql_query( &the_conn, commandString ) != 0 ) //操作数据库

{

fprintf(stdout, "Error at mysql_query().\n");

exit(EXIT_FAILURE);

}

mysql_close( &the_conn ); //断开连接

return OK;

}

/*

* 查询数据库

* commandString -- 查询sql命令

* resultpp -- 指向存放查询结果的双指针,注意,如果该参数为NULL,则程序不返回查询的结果。

* 返回结果状态值,如果操作成功返回OK;否则返回ERROR

*/

STATUS

QueryDatabase( char const *commandString, MYSQL_RES **resultpp )

{

MYSQL the_conn;

MYSQL_RES *resultp = NULL;

if(commandString == NULL) //检查参数是否有效

{

fprintf(stdout, "传递给函数QueryDatabase的参数commandString无效。\n");

return ERROR;

}

if(mysql_init( &the_conn ) == NULL) //获取本次连接的句柄

{

fprintf(stdout, "Error at mysql_init().\n");

exit( EXIT_FAILURE );

}

if(mysql_real_connect( &the_conn, localhost, userName, password, databaseName, MYSQL_PORT, NULL, 0 ) == NULL) //连接数据库

{

fprintf(stdout, "Error at mysql_real_connect().\n");

exit( EXIT_FAILURE );

}

if(mysql_query( &the_conn, commandString ) != 0) //操作数据库

{

fprintf(stdout, "Error at mysql_query().\n");

exit( EXIT_FAILURE );

}

resultp = mysql_store_result(&the_conn); //获取查询结果

mysql_close(&the_conn); //断开连接

if( mysql_num_rows(resultp) != 0 ) //如果查询结果个数不为0

{

if(resultpp == NULL) //判断是否需要返回查询结果

{

mysql_free_result(resultp);

}

else

{

*resultpp = resultp; //返回查询结果

}

return OK;

}

else

{

if(resultpp == NULL)

{

mysql_free_result(resultp);

}

else

{

*resultpp = resultp;

resultp = NULL;

}

return ERROR;

}

}

/*

** 释放掉mysql查询的结果所占内存

**

** storagepp -- 指向存放结果的内存的双指针

** 返回空。

*/

void

FreeTheSearchStorage(MYSQL_RES **storagepp)

{

MYSQL_RES *storagep = NULL;

if(storagepp != NULL)

{

storagep = *storagepp;

if(storagep != NULL)

{

mysql_free_result(storagep);

storagep = NULL;

*storagepp = storagep;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值