Home >Database >Mysql Tutorial >(一个代码学会c语言操作数据库)linux上通过c语言操作数据库实
只要把下面的例子理解了,那么通过C API操作数据库就没啥难的了 #include stdio.h#include mysql.h#include string.h#include stdlib.hMYSQL mysql; //mysql连接MYSQL_RES *res; //这个结构代表返回行的一个查询结果集MYSQL_ROW row; //一个行数据的类型安全
只要把下面的例子理解了,那么通过C API操作数据库就没啥难的了
#include <stdio.h> #include <mysql.h> #include <string.h> #include <stdlib.h> MYSQL mysql; //mysql连接 MYSQL_RES *res; //这个结构代表返回行的一个查询结果集 MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示 char query[100]; //查询语句 char order[100]; void STRINSERT(int count) { char *delim="_"; char *p; char *q; char temp[20]; scanf("%s",temp); strcpy(order,strtok(query,delim)); strcat(order,temp); int i=1; while((p=strtok(NULL,delim))) { strcat(order,p); if(i<count) { scanf("%s",temp); i++; } else { break; } strcat(order,temp); } strcpy(query,order); } void show() { int t,r; strcpy(query," select * from qq"); t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));//执行指定为计数字符串的SQL查询。 if(t) { printf("执行显示时出现异常: %s",mysql_error(&mysql)); } res=mysql_store_result(&mysql);//检索完整的结果集至客户端。 printf("姓名\t学号\t年龄\t\n"); 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);//释放结果集使用的内存。 } void insert() { int t,r; printf("请输入姓名、学号、年龄\n");//安一次回车为输入一项 strcpy(query,"insert into qq(sname,sno,sage) values('_','_',_)"); STRINSERT(3);//转化为命令函数 t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("执行插入时出现异常: %s",mysql_error(&mysql)); } else { printf("添加成功\n"); } } void delete() { int t,r; printf("请输入你要删除学生的学号:\n"); strcpy(query,"delete from qq where sno='_'"); STRINSERT(1); t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("执行删除时出现异常: %s",mysql_error(&mysql)); } } void search() { int t,r; printf("请输入你要查找学生的信息:\n"); strcpy(query,"select * from qq where sno='_'"); STRINSERT(1); t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));//执行指定为计数字符串的SQL查询。 if(t) { printf("执行查询时出现异常: %s",mysql_error(&mysql)); } res=mysql_store_result(&mysql);//检索完整的结果集至客户端。 printf("姓名\t学号\t年龄\t\n"); 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);//释放结果集使用的内存。 } void updata() { int t,r; printf("请输入新的学号和你要修改学生的学号:\n"); strcpy(query,"update qq set sno='_' where sno='_'"); STRINSERT(2); t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("执行更新时出现异常: %s",mysql_error(&mysql)); } else { printf("修改成功\n"); } } void menu() { printf("\t\t1、显示学生信息\n"); printf("\t\t2、添加学生信息\n"); printf("\t\t3、删除学生信息\n"); printf("\t\t4、查找学生信息\n"); printf("\t\t5、修改学生信息\n"); printf("\t\t0、退出系统 \n"); } void quit() { mysql_close(&mysql); printf("数据库已关闭 \n"); exit(1); } int main() { mysql_init(&mysql); if (!mysql_real_connect(&mysql,"localhost", "root", NULL, "test",0,NULL,0)) { printf( "Error connecting to database: %s",mysql_error(&mysql)); } else { printf("Connected...\n"); } int choice; while(1) { menu(); printf("\n\t请选择:"); scanf("%d",&choice); switch(choice) { case 1:show();break; case 2:insert();break; case 3:delete();break; case 4:search();break; case 5:updata();break; case 0:quit(); } } return 0; }
运行结果如下: