今天写的例子,只贴代码,不使用文字说明.
mysqltool.h
#include < stdlib.h >
#include < winsock.h >
#include < mysql.h >
int xinsert(MYSQL * mysql, char * strsql)
{
int t;
MYSQL_RES * res;
t = mysql_real_query(mysql,strsql,(unsigned int )strlen(strsql));
if (t){
printf( " Error id=%d Error: %s/n " ,mysql_errno(mysql),mysql_error(mysql));
return mysql_errno(mysql);
} else {
res = mysql_store_result(mysql);
printf( " 插入行数=%d/n " ,mysql_affected_rows(mysql));
mysql_free_result(res);
}
return 0 ;
}
int xupate(MYSQL * mysql, char * strsql)
{
int t;
MYSQL_RES * res;
t = mysql_real_query(mysql,strsql,(unsigned int )strlen(strsql));
if (t){
printf( " Error id=%d Error: %s/n " ,mysql_errno(mysql),mysql_error(mysql));
return mysql_errno(mysql);
} else {
res = mysql_store_result(mysql);
printf( " 更新行数=%d/n " ,mysql_affected_rows(mysql));
mysql_free_result(res);
}
return 0 ;
}
int xdelete(MYSQL * mysql, char * strsql)
{
int t;
MYSQL_RES * res;
t = mysql_real_query(mysql,strsql,(unsigned int )strlen(strsql));
if (t){
printf( " Error id=%d Error: %s/n " ,mysql_errno(mysql),mysql_error(mysql));
return mysql_errno(mysql);
} else {
res = mysql_store_result(mysql);
printf( " 删行数=%d/n " ,mysql_affected_rows(mysql));
mysql_free_result(res);
}
return 0 ;
}
one.c 代码如下:
#include < stdlib.h >
#include < winsock.h >
#include < mysql.h >
#include < stdio.h >
#include < mysqltool.h >
int main()
{
MYSQL mysql; // mysql连接
MYSQL_RES * res; // 这个结构代表返回行的一个查询结果集
MYSQL_ROW row; // 一个行数据的类型安全(type-safe)的表示
char * query; // 查询语句
int t,r;
mysql_init( & mysql);
if ( ! mysql_real_connect( & mysql, " localhost " , " lottobar " , " 123456 " , " lottobar " , 3306 ,NULL, 0 ))
{
printf( " Error connecting to database: %s/n " ,mysql_error( & mysql));
} else
printf( " Connected /n " );
query = " SET CHARACTER SET GBK " ; // 设置编码
t = mysql_real_query( & mysql,query,(unsigned int )strlen(query));
if (t)
{
printf( " 编码设置失败/n " );
}
query = " select * from demo " ;
t = mysql_real_query( & mysql,query,(unsigned int )strlen(query));
if (t)
{
printf( " 执行查询时出现异常: %s " ,mysql_error( & mysql));
} else
printf( " [%s] 构建成功 /n " ,query);
res = mysql_store_result( & mysql);
while (row = mysql_fetch_row(res))
{
for (t = 0 ;t < mysql_num_fields(res);t ++ )
{
printf( " %s/t " ,row[t]);
}
printf( " /n " );
}
mysql_free_result(res);
t = mysql_real_query( & mysql, " SET AUTOCOMMIT =0 " ,(unsigned int )strlen( " SET AUTOCOMMIT =0 " ));
if (t){
printf( " 启用手工事务失败/n " );
} else {
printf( " 启用手工事务成功/n " );
}
t = mysql_real_query( & mysql, " Begin ; " ,(unsigned int )strlen( " Begin ; " ));
query = " insert into demo(name,age)values('老裴','89') " ;
int inset_result = xinsert( & mysql,query);
query = " delete from demo where name='老裴' " ;
int delete_result = xdelete( & mysql,query);
query = " update demo set name='裴屋村' where name='ccd' and inc_id=13 " ;
int update_result = xupate( & mysql,query);
query = " insert into demo(inc_id,name,age)values(16,'老裴','89') " ; // 执行会出现异常的语句
int fail_result = xinsert( & mysql,query);
if (inset_result == 0 && delete_result == 0 && update_result == 0 && fail_result == 0 ){
printf( " 事务提交/n " );
t = mysql_real_query( & mysql, " COMMIT; " ,(unsigned int )strlen( " COMMIT; " ));
} else {
printf( " 事务回滚/n " );
t = mysql_real_query( & mysql, " ROLLBACK; " ,(unsigned int )strlen( " ROLLBACK; " ));
}
return 0 ;
}
来至:http://www.blogjava.net/pdw2009/archive/2008/03/15/186509.html