1. 程式人生 > >C語言定義的操作mysql數據庫的接口

C語言定義的操作mysql數據庫的接口

oca 個數 hid isp efi 否則 nds 判斷 basename

編寫的環境: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數據庫的接口