怎么在MYSQL中用C语言实现事务处理

如何在MYSQL中用C语言实现事务处理

有什么办法在C语言中实现MYSQL的事务处理哦?

MYSQL没有提供对事务处理的函数,只能用如begin,commit,rollback的命令实现吗?



看它的SDK




自己写了个用C的例子~~ 编译运行通过

#include <stdio.h>

#include <stdlib.h>

#include “mysql.h ”

#define CONN_HOST “localhost ”

#define CONN_USER “guest ”

#define CONN_PASS “123456 ”

#define CONN_DB “lhy ”

#define CONNECTNG 0

#define CONNECTOK 1

#define TRUE 1

#define FAUSLE 0

// global MySQL handler

MYSQL mysql;

int g_MessegeConnect = 0;

// 连接MYSQL数据库 ,返回值保存在全局变量g_MessegeConnect中

int mysql_connet_test()

{

//init MySQL handler

if (!mysql_init(&mysql))

{

return(CONNECTNG);

}

//connect to MySQL

if (!mysql_real_connect(&mysql, CONN_HOST , CONN_USER , CONN_PASS, NULL , MYSQL_PORT, NULL, 0))

{

return(CONNECTNG);

}

//select Database

if (mysql_select_db(&mysql, CONN_DB))

{

return(CONNECTNG);

}

return(CONNECTOK);

}

//向数据库里添加记录,无论成功与否,退出时,关闭连接

//参数说明:SQL 执行的SQL语句

int mysql_insert_data(char*Sql)

{

//事务处理

short Flag = TRUE;

if (mysql_query(&mysql, “BEGIN “))

{

printf( “error: BEGIN “);

Flag = FAUSLE;

return(FAUSLE);

}

//执行SQL语句

if(Flag == TRUE)

{

if ( mysql_query(&mysql, Sql))

{

printf( “error:%S “,Sql);

Flag = FAUSLE;

// 出错数据回滚

mysql_query(&mysql, “ROLLBACK “);

return(FAUSLE);

}

}

// 正确就commit提交数据

if(Flag == TRUE)

{

if ( mysql_query(&mysql, “COMMIT “))

{

printf( “error: COMMIT “);

return(FAUSLE);

}

}

//close mysql

mysql_close(&mysql);

}

//查询数据库里记录,无论成功与否,退出时,关闭连接

//参数说明:

int mysql_select_data(char*Sql)

{

int i;

MYSQL_RES *res;

MYSQL_ROW row;

//excute Select语句

if ( mysql_query(&mysql, Sql))

{

printf( “error:%S “,Sql);

return(FAUSLE);

}

// store result

if (!(res = mysql_store_result(&mysql)))

{

printf( “error:%S “,Sql);

return(FAUSLE);

}

// fetch row and get the result

while((row = mysql_fetch_row(res)))

{

for (i=0 ; i < mysql_num_fields(res); i++)

{

printf( “%s\n “,row[i]);

}

printf( “\n “);

}

//free result

mysql_free_result(res);

//close mysql

mysql_close(&mysql);

}

main()

{

char *Sql = “SELECT * FROM species “;

if( (g_MessegeConnect=mysql_connet_test())== CONNECTOK )

{

mysql_select_data(Sql);

}

Sql = “INSERT INTO species (id,name) VALUES ( ’19 ‘, ‘monkeying ‘) “;

if( (g_MessegeConnect=mysql_connet_test())== CONNECTOK )

{

mysql_insert_data(Sql);

}

Sql = “SELECT * FROM species “;

if( (g_MessegeConnect=mysql_connet_test())== CONNECTOK )

{

mysql_select_data(Sql);

}

return 0;

}

怎么在MYSQL中用C语言实现事务处理

相关文章:

你感兴趣的文章:

标签云: