mysql c语言操作
2015-07-21 15:26
232 查看
在 c 语言中调用 mysql 的 api 函数实现:
连接数据库
查询数据库
修改数据库中某一项的值
连接数据库
查询数据库
修改数据库中某一项的值
#include <stdio.h> #include <stdlib.h> #include <stdio.h> #include "mysql.h" //我的机器上该文件在/usr/include/mysql下 #define SELECT_QUERY "select * from mytable where name like '%s'" //#define ALL_QUERY "select * from mytable;" MYSQL mysql, *sock; //定义数据连接句柄 /******************************************* 函数名: service_sql_init 功能: 服务器数据库初始化 *********************************************/ int service_sql_init(void) { mysql_init(&mysql); /* 连接上数据库 */ // if(!(sock = mysql_real_connect(&mysql, "localhost", "root", "my-name-is?lza1205", "rt5350_user_list", 0, NULL, 0))){ if(!(sock = mysql_real_connect(&mysql, "localhost", "root", "123456", "agent_user_list", 0, NULL, 0))){ fprintf(stderr, "Couldn't connect to engine!\n%s\n\n", mysql_error(&mysql)); perror(""); exit(1); } app_printf("mysql init is ok \r\n"); return 0; } /******************************************* 函数名: service_sql_select 功能: 根据name 从服务器中找出passwd *********************************************/ int service_sql_select(char *name, char *passwd) { MYSQL_RES *res; //查询结果集 // MYSQL_FIELD *fd; //包含字段信息 MYSQL_ROW row; //存放一行查询结果的字符串数组 char qbuf[160]; //存放查询 sql 语句字符串 sprintf(qbuf, SELECT_QUERY, name); printf("qbuf is %s\n", qbuf); /* 查询数据库 */ if(mysql_query(sock, qbuf)){ fprintf(stderr, "Query failed (%s)\n", mysql_error(sock)); return -1; } if(!(res = mysql_store_result(sock))){ fprintf(stderr, "Couldn't get result from %s\n", mysql_error(sock)); return -1; } printf("number of fields returned : %d\n", mysql_num_fields(res)); while((row = mysql_fetch_row(res))){ printf("Ther name #%s 's passwd is: %s\n", (((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0]), (((row[1]==NULL)&&(!strlen(row[1]))) ? "NULL" : row[1])); puts( "query ok !\n" ) ; strcpy(passwd, (((row[1]==NULL)&&(!strlen(row[1]))) ? "NULL" : row[1])); mysql_free_result(res); return 0; } mysql_free_result(res); return -1; // mysql_close(sock); } #define UPDATE_STRING_QUERY "update mytable set %s=\'%s\' where name=\'%s\'" #define UPDATE_INT_QUERY "update mytable set %s=%d where name=\'%s\'" /* 根据名字修改数据库中的某项 */ int server_sql_update_string(char *name, char *key, char *val) { char qbuf[160]; //存放查询 sql 语句字符串 sprintf(qbuf, UPDATE_STRING_QUERY, key, val, name); printf("qbuf is %s\n", qbuf); /* 查询数据库 */ if(mysql_query(sock, qbuf)){ fprintf(stderr, "Query failed (%s)\n", mysql_error(sock)); return -1; } return 0; } int server_sql_update_int(char *name, char *key, unsigned int val) { char qbuf[160]; //存放查询 sql 语句字符串 sprintf(qbuf, UPDATE_INT_QUERY, key, val, name); printf("qbuf is %s\n", qbuf); /* 查询数据库 */ if(mysql_query(sock, qbuf)){ fprintf(stderr, "Query failed (%s)\n", mysql_error(sock)); return -1; } return 0; }
相关文章推荐
- 一个很好的C++ API函数例子的网站
- C语言读写配置文件的方法
- C++ 中dynamic_cast<>的使用方法
- C++程序编译过程简介
- C++ 使用模板类的原因
- matlib complie C++ with opencv
- Visual C++ 在windows 7 上预编译头错误unexpected precompiled header error, simply rerunning the compiler migh
- PAT (Basic Level) Practise (中文)1023. 组个最小数 (20)C语言
- PAT (Basic Level) Practise (中文)1021. 个位数统计 (15) C语言
- PAT (Basic Level) Practise (中文)1017. A除以B (20) C语言
- PAT (Basic Level) Practise (中文)1013. 数素数 (20) C语言
- PAT (Basic Level) Practise (中文)1012. 数字分类 (20) C语言
- PAT (Basic Level) Practise (中文)1011. A+B和C (15) C语言
- PAT (Basic Level) Practise (中文)1008. 数组元素循环右移问题 (20) C语言
- PAT (Basic Level) Practise (中文)1007. 素数对猜想 (20) C语言
- PAT (Basic Level) Practise (中文)1006. 换个格式输出整数 (15) C语言
- PAT (Basic Level) Practise (中文)1005. 继续(3n+1)猜想 (25) C语言
- PAT (Basic Level) Practise (中文)1004. 成绩排名 (20) C语言
- C++ STL算法系列4---unique , unique_copy函数
- C++ string学习