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

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, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要干掉的名字>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话是替换printf函数的,这样写就不需要
也能向屏幕输出了
char name[1024];
memset(name, 0, sizeof(name));
read(STDIN_FILENO, name, sizeof(name)); //等待 用户输入要删除的名字,假定用户输入的是"饭岛爱"
name[strlen(name) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL, "DELETE FROM table1 WHERE name = '%s'", name); //
//SQL = DELETE FROM table1 WHERE name = '饭岛爱'
printf("'%s'
", SQL);
}

void insertname(char *SQL)
{
memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的名字>:");
write(STDOUT_FILENO, SQL, BUFSIZE); //这句话是替换printf函数的,这样写就不需要
也能向屏幕输出了
char name[1024];
memset(name, 0, sizeof(name));
read(STDIN_FILENO, name, sizeof(name)); //等待 用户输入要插入的名字,假定用户输入的是"饭岛爱"
name[strlen(name) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的性别>:");
write(STDOUT_FILENO, SQL, strlen(SQL));
char sex[1024];
memset(sex, 0, sizeof(sex));
read(STDIN_FILENO, sex, sizeof(sex)); //等待 用户输入要插入的性别,
sex[strlen(sex) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的年龄>:");
write(STDOUT_FILENO, SQL, strlen(SQL));
char age[1024];
memset(age, 0, sizeof(age));
read(STDIN_FILENO, age, sizeof(age)); //等待 用户输入要插入的年龄
age[strlen(age) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的班级>:");
write(STDOUT_FILENO, SQL, strlen(SQL));
char classes[1024];
memset(classes, 0, sizeof(classes));
read(STDIN_FILENO, classes, sizeof(classes)); //等待 用户输入要插入的班级
classes[strlen(classes) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL,
"INSERT INTO table1 (name, sex, age, class) VALUES ('%s', '%s', %s, '%s')",
name, sex, age, classes); //
//SQL = DELETE FROM table1 WHERE name = '饭岛爱'
printf("'%s'
", SQL);
}

void updatename(char *SQL)
{
memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要修改的名字>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话是替换printf函数的,这样写就不需要
也能向屏幕输出了
char name[1024];
memset(name, 0, sizeof(name));
read(STDIN_FILENO, name, sizeof(name)); //等待 用户输入要插入的名字,假定用户输入的是"饭岛爱"
name[strlen(name) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要性别的性别>:");
write(STDOUT_FILENO, SQL, strlen(SQL));
char sex[1024];
memset(sex, 0, sizeof(sex));
read(STDIN_FILENO, sex, sizeof(sex)); //等待 用户输入要插入的性别,
sex[strlen(sex) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要年龄的年龄>:");
write(STDOUT_FILENO, SQL, strlen(SQL));
char age[1024];
memset(age, 0, sizeof(age));
read(STDIN_FILENO, age, sizeof(age)); //等待 用户输入要插入的年龄
age[strlen(age) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要修改的班级>:");
write(STDOUT_FILENO, SQL, strlen(SQL));
char classes[1024];
memset(classes, 0, sizeof(classes));
read(STDIN_FILENO, classes, sizeof(classes)); //等待 用户输入要插入的班级
classes[strlen(classes) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'

memset(SQL, 0, BUFSIZE);
sprintf(SQL,
"UPDATE table1 SET sex = '%s', age = %s, class = '%s' WHERE name = '%s'",
sex, age, classes, name); //
//SQL = DELETE FROM table1 WHERE name = '饭岛爱'
printf("'%s'
", SQL);
}

void selectname(const char *SQL)
{
/*
char SQL[1024];
memset(SQL, 0, BUFSIZE);
sprintf(SQL, "%s", "请输入要查询的名字>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话是替换printf函数的,这样写就不需要
也能向屏幕输出了
char name[1024];
memset(name, 0, sizeof(name));
read(STDIN_FILENO, name, sizeof(name)); //等待 用户输入要删除的名字,假定用户输入的是"饭岛爱"
name[strlen(name) – 1] = 0; //将字符串最后1位
替换为0,最后放的是整数0,而不是字符'0'
memset(SQL, 0, 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, 0, 0);
if (connection == NULL)
{
printf("connect error, %s
", mysql_error(&mysql));
return ⑴;
}

if (mysql_query(connection, "SET NAMES utf8") != 0) //设置字符集为UTF8
{
printf("设置字符集毛病, %s
", mysql_error(&mysql));
}

char buf[BUFSIZE];
memset(buf, 0, sizeof(buf));
strcpy(buf, "请选择
1:插入
2:删除
3:修改
4:查询
");
write(STDOUT_FILENO, buf, strlen(buf));
memset(buf, 0, sizeof(buf));
read(STDIN_FILENO, buf, sizeof(buf));
if (strncmp(buf, "4", 1) == 0) //输入用户输入的是4
{
memset(buf, 0, sizeof(buf));
strcpy(buf, "请输入任意SELECt语句");
write(STDOUT_FILENO, buf, strlen(buf));
memset(buf, 0, sizeof(buf));
read(STDIN_FILENO, buf, 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;
}

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 【C/C++学院】(22)Mysql数据库编程–C语言操作数据库

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡