加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

【C/C++学院】(22)Mysql数据库编程--C语言操作数据库

发布时间:2020-12-13 20:17:06 所属栏目:PHP教程 来源:网络整理
导读:makefile .SUFFIXES: .c .oCC=gccSRCS=mysql1.cOBJS=$(SRCS:.c=.o)EXEC=mysql1all: $(OBJS)$(CC) -o $(EXEC) $(OBJS) -lmysqlclient@echo -------------ok--------------.c.o:$(CC) -Wall -g -o $@ -c $ clean:rm -f $(OBJS)rm -f core* mysql1.c #include s

makefile

.SUFFIXES: .c .o CC=gcc SRCS=mysql1.c OBJS=$(SRCS:.c=.o) EXEC=mysql1 all: $(OBJS) $(CC) -o $(EXEC) $(OBJS) -lmysqlclient @echo '-------------ok--------------' .c.o: $(CC) -Wall -g -o $@ -c $< clean: rm -f $(OBJS) rm -f core*

mysql1.c

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <termios.h> #include <mysql/mysql.h> #define BUFSIZE 1024 MYSQL mysql,*connection; void deletename(char *SQL) { memset(SQL,BUFSIZE); sprintf(SQL,"%s","请输入要干掉的名字>:"); write(STDOUT_FILENO,SQL,strlen(SQL)); //这句话是替换printf函数的,这样写就不需要 也能向屏幕输出了 char name[1024]; memset(name,sizeof(name)); read(STDIN_FILENO,name,sizeof(name)); //等待 用户输入要删除的名字,假定用户输入的是"饭岛爱" name[strlen(name) - 1] = 0; //将字符串最后1位 替换为0,最后放的是整数0,而不是字符'0' memset(SQL,"DELETE FROM table1 WHERE name = '%s'",name); // //SQL = DELETE FROM table1 WHERE name = '饭岛爱' printf("'%s' ",SQL); } void insertname(char *SQL) { memset(SQL,"请输入要插入的名字>:"); write(STDOUT_FILENO,BUFSIZE); //这句话是替换printf函数的,这样写就不需要 也能向屏幕输出了 char name[1024]; memset(name,sizeof(name)); //等待 用户输入要插入的名字,"请输入要插入的性别>:"); write(STDOUT_FILENO,strlen(SQL)); char sex[1024]; memset(sex,sizeof(sex)); read(STDIN_FILENO,sex,sizeof(sex)); //等待 用户输入要插入的性别,sex[strlen(sex) - 1] = 0; //将字符串最后1位 替换为0,"请输入要插入的年龄>:"); write(STDOUT_FILENO,strlen(SQL)); char age[1024]; memset(age,sizeof(age)); read(STDIN_FILENO,age,sizeof(age)); //等待 用户输入要插入的年龄 age[strlen(age) - 1] = 0; //将字符串最后1位 替换为0,"请输入要插入的班级>:"); write(STDOUT_FILENO,strlen(SQL)); char classes[1024]; memset(classes,sizeof(classes)); read(STDIN_FILENO,classes,sizeof(classes)); //等待 用户输入要插入的班级 classes[strlen(classes) - 1] = 0; //将字符串最后1位 替换为0,"INSERT INTO table1 (name,class) VALUES ('%s','%s',%s,'%s')",classes); // //SQL = DELETE FROM table1 WHERE name = '饭岛爱' printf("'%s' ",SQL); } void updatename(char *SQL) { memset(SQL,"请输入要修改的名字>:"); write(STDOUT_FILENO,"请输入要性别的性别>:"); write(STDOUT_FILENO,"请输入要年龄的年龄>:"); write(STDOUT_FILENO,"请输入要修改的班级>:"); write(STDOUT_FILENO,"UPDATE table1 SET sex = '%s',age = %s,class = '%s' WHERE name = '%s'",SQL); } void selectname(const char *SQL) { /* char SQL[1024]; memset(SQL,"请输入要查询的名字>:"); write(STDOUT_FILENO,最后放的是整数0,而不是字符'0' memset(SQL,BUFSIZE); if (strlen(name) == 0) //用户没有任何输入,只是敲了回车,长度为0了 { sprintf(SQL,"SELECT * FROM table2"); // } else { sprintf(SQL,"SELECT * FROM table2 where name = '%s'",name); // } */ if (mysql_query(connection,SQL) != 0) { printf("query error,%s ",mysql_error(&mysql)); } //调用mysql_store_result得到查询结果,结果放到MYSQL_RES结构当中 MYSQL_RES *result = mysql_store_result(connection); //要知道返回数据集有多少列才能自由的使用各种SELECT语句 MYSQL_FIELD *field; int iFieldCount = 0; while (1) { field = mysql_fetch_field(result); //循环得到列名,如果循环到了列的最后,函数返回NULL if (field == NULL) break; printf("%s ",field->name); iFieldCount++; } printf(" "); //循环遍历每行 MYSQL_ROW row; while (1) { row = mysql_fetch_row(result); if (row == NULL) break; int i = 0; for (; i < iFieldCount; i++) { printf("%s ",(const char *) row[i]); } printf(" "); } mysql_free_result(result); } int main(int arg,char *args[]) { if (arg < 4) return ⑴; mysql_init(&mysql); //相当于SQL内部初始化了1个TCP的socket,同时初始化了SQL必须的内存和1些结构 //连接到mysql server connection = mysql_real_connect(&mysql,args[1],args[2],args[3],args[4],0); if (connection == NULL) { printf("connect error,mysql_error(&mysql)); return ⑴; } if (mysql_query(connection,"SET NAMES utf8") != 0) //设置字符集为UTF8 { printf("设置字符集毛病,mysql_error(&mysql)); } char buf[BUFSIZE]; memset(buf,sizeof(buf)); strcpy(buf,"请选择 1:插入 2:删除 3:修改 4:查询 "); write(STDOUT_FILENO,buf,strlen(buf)); memset(buf,sizeof(buf)); read(STDIN_FILENO,sizeof(buf)); if (strncmp(buf,"4",1) == 0) //输入用户输入的是4 { memset(buf,sizeof(buf)); strcpy(buf,"请输入任意SELECt语句"); write(STDOUT_FILENO,strlen(buf)); memset(buf,sizeof(buf)); read(STDIN_FILENO,sizeof(buf)); selectname(buf); } else { if (strncmp(buf,"1",1) == 0) //输入用户输入的是1 { insertname(buf); } if (strncmp(buf,"2",1) == 0) //输入用户输入的是2 { deletename(buf); } if (strncmp(buf,"3",1) == 0) //输入用户输入的是3 { updatename(buf); } mysql_query(connection,buf); } mysql_close(connection); //断开与SQL server的连接 puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ return EXIT_SUCCESS; }



(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读