C语言访问MYSQL数据库语法

C语言访问MYSQL数据库语法

基本的增删改查操作:

#include<stdio.h>
#include<stdlib.h>
#include<mysql/mysql.h>

void error_quit(const char *str,MYSQL *conn_ptr){
	fprintf(stderr,"%s\n erron:%d\n error:%s\n sqlstat:%s\n",str,mysql_errno(conn_ptr),mysql_error(conn_ptr),mysql_sqlstate(conn_ptr));
	if(conn_ptr!=NULL){
		mysql_close(conn_ptr);
	}
	free(conn_ptr);
	exit(0);
}

void free_conn(MYSQL *mysql){
	mysql_close(mysql);
	free(mysql);
}

void insert_chang(MYSQL *my_con){
	int res;
	res=mysql_query(my_con,"insert into emp values(3,'changlq',18000.0)");
	if(res != 0){
		error_quit("insert fail",my_con);
	}
	printf("affected rows:%d\n",mysql_affected_rows(my_con));
	printf("last insertid:%d\n",mysql_insert_id(my_con));
}

void update_chang(MYSQL *my_con){
	int res;
	res=mysql_query(my_con,"update emp set sal=28000.0 where id=3");
	if(res != 0){
		error_quit("update fail",my_con);
	}
	printf("affected rows:%d\n",mysql_affected_rows(my_con));
}

void delete_chang(MYSQL *my_con){
	int res;
	res=mysql_query(my_con,"delete from emp where id=3");
	if(res != 0){
		error_quit("delete fail",my_con);
	}
	printf("affected rows:%d\n",mysql_affected_rows(my_con));
}

void select_mysql(MYSQL *my_con){
	MYSQL_RES    *my_res; //查询结果
	MYSQL_FIELD  *my_field;//结果中字段信息
	MYSQL_ROW    my_row;//结果中数据信息
	unsigned long *lengths;
	int cols,res,i;
	//获取整个表内容
	int num=1;
	char sql_str[]="select * from emp where id>=%d";
	printf("[%s]\n",sql_str);
	sprintf(sql_str,sql_str,num);
	printf("[%s]\n",sql_str);
	res=mysql_query(my_con,sql_str);
	if(res!=0) error_quit("select fail",my_con);
	//从服务端取回结果,mysql_store_result会把数据全部拉到客户端,mysql_use_result则不会
	my_res=mysql_store_result(my_con);
	if(my_res==NULL) error_quit("mysql_store_result fail",my_con);
	//获取记录数:mysql_row_seek(),mysql_data_seek(),mysql_num_rows只有在用mysql_store_result才可以使用
	printf("num rows:%d\n",mysql_num_rows(my_res));
	//获取列数
	cols=mysql_num_fields(my_res);
	printf("num cols:%d\n",cols);
	//获取字段信息
	my_field=mysql_fetch_fields(my_res);
	for(i=0;i<cols;i++) printf("%s\t",my_field[i].name);
	printf("\n");
	//字段类型%d
	for(i=0;i<cols;i++) printf("%d\t",my_field[i].type);
	printf("\n");
	//输出查询结果
	while(my_row=mysql_fetch_row(my_res)){
		for(i=0;i<cols;i++){
			//数据长度
			lengths=mysql_fetch_lengths(my_res);
			printf("%s(%lu)\t",my_row[i],lengths[i]);
		}
		printf("\n");
	}
	mysql_free_result(my_res);
}

int main(){
	/*
	gcc -o chang_mysql mysql_access.c -L /usr/lib64/mysql -lmysqlclient
	*/
  MYSQL *conn_ptr=(MYSQL *)malloc(sizeof(MYSQL));
  conn_ptr=mysql_init(conn_ptr);
  if(!conn_ptr){
    printf("mysql_init error\n");
    return -1;
  }
  //conn_ptr=mysql_real_connect(conn_ptr,"127.0.0.1","root","123456","db_chang",3306,NULL,0);
  conn_ptr=mysql_real_connect(conn_ptr,"127.0.0.1","root","123456","chang_dep",0,NULL,0);
  if(conn_ptr){
    printf("connect success!\n");
  }else{
  	printf("connect fail![errno:%d][error:%s][sqlstat:%s]\n",mysql_errno(conn_ptr),mysql_error(conn_ptr),mysql_sqlstate(conn_ptr));
  }
  mysql_query(conn_ptr,"set names utf8");
  //select
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  select_mysql(conn_ptr);
  //insert
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  insert_chang(conn_ptr);
  select_mysql(conn_ptr);
  //update
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  update_chang(conn_ptr);
  select_mysql(conn_ptr);
  //delete
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  delete_chang(conn_ptr);
  select_mysql(conn_ptr);
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  free_conn(conn_ptr);
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值