码迷,mamicode.com
首页 > 数据库 > 详细

C语言定义的操作mysql数据库的接口

时间:2017-10-02 17:49:50      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:error   turn   ==   printf   主机   stat   pen   password   splay   

编写的环境:centos7系统下,对mysql的衍生mariadb进行数据库的操作,包含设置访问数据库的参数,查询数据库和增删改数据库的三个功能。对于查询数据库,我这里允许不返回查询结果,用于判断查询是否成功的功能编写上。

先上头文件

技术分享
 1 /* 该文件用于描述访问数据库的接口声明 */
 2 #ifndef _OPERATE_DB_H_
 3 #define _OPERATE_DB_H_
 4 #include <mysql.h>
 5 #include "status.h"
 6 
 7 /*
 8  * 访问数据库的字符串的最大长度
 9  */
10 #define QUERY_MAX_SIZE 1024
11 
12 /*
13  * 设置访问数据库参数
14  * _localhost -- 访问数据库的主机名
15  * _userName -- 访问数据库的用户名
16  * _password -- 对应的密码
17  * _databaseName -- 要操作的数据库名字
18  * 返回结果状态值,如果没有异常返回OK;否则返回ERROR
19  */
20 STATUS
21 InitDbParms( char const *_localhost, char const *_userName, char const *_password, char const *_databaseName );
22 
23 /*
24  * 操作数据库
25  * commandString -- 存放SQL操作命令
26  * 如果操作成功返回OK;否则返回ERROR
27  */
28 STATUS
29 UpdateDatabase( char const *commandString );
30 
31 /*
32  * 查询数据库
33  * commandString -- 查询sql命令
34  * resultp -- 指向存放查询结果的双指针
35  * 返回结果状态值,如果操作成功返回OK;否则返回ERROR
36  */
37 STATUS
38 QueryDatabase( char const *commandString, MYSQL_RES **resultpp );
39 #endif
operateDb.h

再上接口定义

技术分享
  1 /* 该文件用于描述访问数据库的接口定义 */
  2 #include <stdio.h>
  3 #include <stdlib.h>
  4 #include <mysql.h>
  5 #include "operateDb.h"
  6 #include "status.h"
  7 
  8 /*
  9  * 内部数据
 10  */
 11 static char const *localhost = NULL; //主机名
 12 static char const *userName = NULL;  //mysql用户名
 13 static char const *password = NULL;  //它的密码
 14 static char const *databaseName = NULL; //所要操作的数据库
 15 
 16 /*
 17  * 外部接口
 18  *
 19  *
 20  * 设置访问数据库参数
 21  * _localhost -- 访问数据库的主机名
 22  * _userName -- 访问数据库的用户名
 23  * _password -- 对应的密码
 24  * _databaseName -- 要操作的数据库名字
 25  * 返回结果状态值,如果没有异常返回OK;否则返回ERROR
 26  */
 27 STATUS
 28 InitDbParms( char const *_localhost, char const *_userName, char const *_password, char const *_databaseName )
 29 {
 30         if(_localhost == NULL) //检查参数是否有效
 31         {
 32                 fprintf(stdout, "传递给函数InitDbParms的参数_localhost无效。\n");
 33                 return ERROR;
 34         }
 35         if(_userName == NULL)
 36         {
 37                 fprintf(stdout, "传递给函数InitDbParms的参数_userName无效。\n");
 38                 return ERROR;
 39         }
 40         if(_databaseName == NULL)
 41         {
 42                 fprintf(stdout, "传递给函数InitDbParms的参数_databaseName无效。\n");
 43                 return ERROR;
 44         }
 45 
 46         localhost = _localhost;
 47         userName = _userName;
 48         password = _password;
 49         databaseName = _databaseName;
 50         return OK;
 51 }
 52 
 53 /*
 54  * 操作数据库
 55  * commandString -- 存放SQL操作命令
 56  * 如果操作成功返回OK;否则返回ERROR
 57  */
 58 STATUS
 59 UpdateDatabase( char const *commandString )
 60 {
 61         MYSQL the_conn;
 62 
 63         if(commandString == NULL) //检查参数是否有效
 64         {
 65                 fprintf(stdout, "传递给函数UpdateDatabase的参数commandString无效。\n");
 66                 return ERROR;
 67         }
 68 
 69         if( mysql_init( &the_conn ) == NULL ) //获取本次连接的句柄
 70         {
 71                 fprintf(stdout, "Error at mysql_init().\n");
 72                 exit( EXIT_FAILURE );
 73         }
 74 
 75         if( mysql_real_connect( &the_conn, localhost, userName, password, databaseName, MYSQL_PORT, NULL, 0 ) == NULL ) //连接数据库
 76         {
 77                 fprintf(stdout, "Error at mysql_real_connect().\n");
 78                 exit( EXIT_FAILURE );
 79         }
 80 
 81         if( mysql_query( &the_conn, commandString ) != 0 ) //操作数据库
 82         {
 83                 fprintf(stdout, "Error at mysql_query().\n");
 84                 exit(EXIT_FAILURE);
 85         }
 86         mysql_close( &the_conn ); //断开连接
 87         return OK;
 88 }
 89 
 90 /*
 91  * 查询数据库
 92  * commandString -- 查询sql命令
 93  * resultpp -- 指向存放查询结果的双指针
 94  * 返回结果状态值,如果操作成功返回OK;否则返回ERROR
 95  */
 96 STATUS
 97 QueryDatabase( char const *commandString, MYSQL_RES **resultpp )
 98 {
 99         MYSQL the_conn;
100         MYSQL_RES *resultp = NULL;
101 
102         if(commandString == NULL) //检查参数是否有效
103         {
104                 fprintf(stdout, "传递给函数QueryDatabase的参数commandString无效。\n");
105                 return ERROR;
106         }
107 
108         if(mysql_init( &the_conn ) == NULL) //获取本次连接的句柄
109         {
110                 fprintf(stdout, "Error at mysql_init().\n");
111                 exit( EXIT_FAILURE );
112         }
113 
114         if(mysql_real_connect( &the_conn, localhost, userName, password, databaseName, MYSQL_PORT, NULL, 0 ) == NULL) //连接数据库
115         {
116                 fprintf(stdout, "Error at mysql_real_connect().\n");
117                 exit( EXIT_FAILURE );
118         }
119 
120         if(mysql_query( &the_conn, commandString ) != 0) //操作数据库
121         {
122                 fprintf(stdout, "Error at mysql_query().\n");
123                 exit( EXIT_FAILURE );
124         }
125 
126         resultp = mysql_store_result(&the_conn); //获取查询结果
127         mysql_close(&the_conn); //断开连接
128 
129         if( mysql_num_rows(resultp) != 0 ) //如果查询结果个数不为0
130     {
131                 if(resultpp == NULL) //判断是否需要返回查询结果
132                 {
133                         mysql_free_result(resultp);
134                 }
135                 else
136                 {
137                         *resultpp = resultp; //返回查询结果
138                 }
139                 return OK;
140         }
141         else
142         {
143                 if(resultpp == NULL)
144                 {
145                         mysql_free_result(resultp);
146                 }
147                 else
148                 {
149                         *resultpp = resultp = NULL;
150                 }
151                 return ERROR;
152         }
153 }
operateDb.c

~ 望路过的人,给点儿光热。~

C语言定义的操作mysql数据库的接口

标签:error   turn   ==   printf   主机   stat   pen   password   splay   

原文地址:http://www.cnblogs.com/the-one/p/7620397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!