用的是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;
// 执行书屋开始SQL
ret = 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;
}