C言語アクセスMYSQLデータベース構文
25443 ワード
C言語アクセスMYSQLデータベース構文
基本的な添削変更操作:
基本的な添削変更操作:
#include
#include
#include
void error_quit(const char *str,MYSQL *conn_ptr){
fprintf(stderr,"%s
erron:%d
error:%s
sqlstat:%s
",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
",mysql_affected_rows(my_con));
printf("last insertid:%d
",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
",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
",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]
",sql_str);
sprintf(sql_str,sql_str,num);
printf("[%s]
",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
",mysql_num_rows(my_res));
//
cols=mysql_num_fields(my_res);
printf("num cols:%d
",cols);
//
my_field=mysql_fetch_fields(my_res);
for(i=0;i<cols;i++) printf("%s\t",my_field[i].name);
printf("
");
// %d
for(i=0;i<cols;i++) printf("%d\t",my_field[i].type);
printf("
");
//
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("
");
}
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
");
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!
");
}else{
printf("connect fail![errno:%d][error:%s][sqlstat:%s]
",mysql_errno(conn_ptr),mysql_error(conn_ptr),mysql_sqlstate(conn_ptr));
}
mysql_query(conn_ptr,"set names utf8");
//select
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
");
select_mysql(conn_ptr);
//insert
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
");
insert_chang(conn_ptr);
select_mysql(conn_ptr);
//update
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
");
update_chang(conn_ptr);
select_mysql(conn_ptr);
//delete
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
");
delete_chang(conn_ptr);
select_mysql(conn_ptr);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
");
free_conn(conn_ptr);
return 0;
}