今天寫的例子,只貼代碼,不使用文字說(shuō)明.
mysqltool.h
#include <stdio.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("插入行數(shù)=%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("更新行數(shù)=%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("刪行數(shù)=%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; //這個(gè)結(jié)構(gòu)代表返回行的一個(gè)查詢結(jié)果集
MYSQL_ROW row; //一個(gè)行數(shù)據(jù)的類型安全(type-safe)的表示
char *query; //查詢語(yǔ)句
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"; //設(shè)置編碼
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
if(t)
{
printf("編碼設(shè)置失敗\n");
}
query=" select * from demo ";
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
if(t)
{
printf("執(zhí)行查詢時(shí)出現(xiàn)異常: %s",mysql_error(&mysql));
}else
printf("[%s] 構(gòu)建成功 \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("啟用手工事務(wù)失敗\n");
}else{
printf("啟用手工事務(wù)成功\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')";//執(zhí)行會(huì)出現(xiàn)異常的語(yǔ)句
int fail_result=xinsert(&mysql,query);
if(inset_result==0 && delete_result==0 && update_result==0 && fail_result==0){
printf("事務(wù)提交\n");
t=mysql_real_query(&mysql,"COMMIT;",(unsigned int)strlen("COMMIT;"));
}else{
printf("事務(wù)回滾\n");
t=mysql_real_query(&mysql,"ROLLBACK;",(unsigned int)strlen("ROLLBACK;"));
}
return 0;
}