MYSQL 的自我封装

来源:互联网 发布:淘宝推广网站大全 编辑:程序博客网 时间:2024/06/06 08:42

用的是C语言 

// gcc 1.cpp -lmysqlclient#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql/mysql.h>#define BEGIN_TRAN "START TRANSACTION"#define SET_TRAN"SET AUTOCOMMIT=0"  #define UNSET_TRAN"SET AUTOCOMMIT=1"#define COMMIT_TRAN"COMMIT"#define ROLLBACK_TRAN"ROLLBACK"// 开启事务模式int mysql_BeginTran(MYSQL * mysql){int ret = 0;// 执行书屋开始SQLret = mysql_query(mysql, BEGIN_TRAN);if(ret != 0){printf("func mysql_query() err : %d\n", ret);return ret;}// 设置事务手动提交ret = mysql_query(mysql, SET_TRAN);if(ret != 0){printf("func mysql_query() err : %d\n", ret);return ret;}return ret;}// 事务回滚int mysql_Rollback(MYSQL *mysql){int ret = 0;// 事务回滚操作ret = mysql_query(mysql, ROLLBACK_TRAN);if(ret != 0){printf("func mysql_query() err : %d\n", ret);return ret;}// 恢复事务自动提交标志ret = mysql_query(mysql, UNSET_TRAN);if(ret != 0){printf("func mysql_query() err : %d\n", ret);return ret;}return ret;}// 事务提交int mysql_Commit(MYSQL *mysql){int ret = 0;// 事务提交操作ret = mysql_query(mysql, COMMIT_TRAN);if(ret != 0){printf("func mysql_query() err : %d\n", ret);return ret;}// 恢复事务自动提交标志ret = mysql_query(mysql, UNSET_TRAN);if(ret != 0){printf("func mysql_query() err : %d\n", ret);return ret;}return ret;}MYSQL * init(){// 初始换数据可操作句柄MYSQL * mysql = mysql_init(NULL);if(mysql == NULL){printf("初始化 mysql 指针失败\n");return NULL;}// 链接数据库MYSQL *con = mysql_real_connect(mysql, NULL, "root", "", "my_db", 0 ,NULL, 0);if(con == NULL){printf("链接服务器失败: %s\n", mysql_error(mysql));return NULL;}printf("链接 mysql 服务器...\n");//解决中文乱码mysql_query(mysql, "set names utf8");return con;}int mysql_exec(MYSQL *mysql, const char * sq1){int ret = mysql_query(mysql, sq1);if(ret != 0){printf("操作失败: %s\n", mysql_error(mysql));return -1;}// 下载本地数据// 我使用一次一次下载数据MYSQL_RES * mysql_res = mysql_use_result(mysql);if(mysql_res == NULL){if(mysql_errno == 0) //不是错误{printf("操作成功\n");return 0;}printf("mysql_use_result() error: %s\n", mysql_error(mysql));return -1;}//求数据的 列数unsigned int num = mysql_num_fields(mysql_res);//输出字段int i;MYSQL_FIELD *fields = mysql_fetch_fields(mysql_res);for(i = 0; i<num ; i++){printf("%-8s",fields[i].name);}printf("\n");//输出数据MYSQL_ROW row;while(row = mysql_fetch_row(mysql_res)){for(i = 0; i<num ; i++){printf("%-8s", row[i]);}printf("\n");}return 0;}


原创粉丝点击