linux c下mysql编程样例
/*
============================================================================
Name : mysql1.c
Author : suys
Version :
Copyright : Your copyright notice
Description : Link to mysql in C, Ansi-style
============================================================================
*/ #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, *conn;
//删除函数
void deletename(char *SQL)
{
memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入要干掉的名字>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char name[];
memset(name, , sizeof(name));
read(STDIN_FILENO, name, sizeof(name)); //等待用户输入要删除的名字
name[strlen(name) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "DELETE FROM table1 WHERE name = '%s'", name);
printf("%s\n", SQL);
} //插入数据函数
void insertname(char *SQL)
{
memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的名字>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char name[];
memset(name, , sizeof(name));
read(STDIN_FILENO, name, sizeof(name)); //等待用户输入要删除的名字
name[strlen(name) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的性别>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char sex[];
memset(sex, , sizeof(sex));
read(STDIN_FILENO, sex, sizeof(sex)); //等待用户输入要删除的名字
sex[strlen(sex) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的年龄>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char age[];
memset(age, , sizeof(age));
read(STDIN_FILENO, age, sizeof(age)); //等待用户输入要删除的名字
age[strlen(age) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入要插入的班级>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char classes[];
memset(classes, , sizeof(classes));
read(STDIN_FILENO, classes, sizeof(classes)); //等待用户输入要删除的名字
classes[strlen(classes) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "INSERT INTO table1 (name, sex, age, class) VALUES ('%s', '%s', %s, %s)", name, sex, age, classes);
printf("%s\n", SQL);
} //更新数据函数
void updatename(char *SQL)
{
memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入要修改的名字>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char name[];
memset(name, , sizeof(name));
read(STDIN_FILENO, name, sizeof(name)); //等待用户输入要删除的名字
name[strlen(name) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入修改后的性别>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char sex[];
memset(sex, , sizeof(sex));
read(STDIN_FILENO, sex, sizeof(sex)); //等待用户输入要删除的名字
sex[strlen(sex) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入修改后的年龄>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char age[];
memset(age, , sizeof(age));
read(STDIN_FILENO, age, sizeof(age)); //等待用户输入要删除的名字
age[strlen(age) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "%s", "请输入修改后的班级>:");
write(STDOUT_FILENO, SQL, strlen(SQL)); //这句话替代printf函数,这样写就不需要\n也能相输出屏幕输出
char classes[];
memset(classes, , sizeof(classes));
read(STDIN_FILENO, classes, sizeof(classes)); //等待用户输入要删除的名字
classes[strlen(classes) - ] = ; //将字符串最后一位\n替换为0,最后放的整数0而不是字符串'0' memset(SQL, , BUFSIZE);
sprintf(SQL, "UPDATE table1 SET sex = '%s', age = '%s', class = '%s' WHERE name = '%s'", sex, age, classes, name);
printf("%s\n", SQL);
} //查询
void selectname(const char *SQL)
{
if(mysql_query(conn, SQL) != )
{
printf("query error, %s\n", mysql_error(&mysql));
}
//调用mysql_store_result得到查询结果,结果放到MYSQL_RES 结构中
MYSQL_RES *result = mysql_store_result(conn);
//要知道返回数据集有多少列才能自由的使用SELECT语句
MYSQL_FIELD *field;
int iFieldCount = ; while()
{
field = mysql_fetch_field(result); //循环得到列名,如果循环到列的最后,函数返回NULL
if(field == NULL)
break;
printf("%s\t", field->name);
iFieldCount++;
}
printf("\n");
//循环遍历每一行
MYSQL_ROW row;
while()
{
row = mysql_fetch_row(result);
if(row == NULL)
break;
int i = ;
for(; i < iFieldCount; i++)
printf("%s\t", (const char *)row[i]);
printf("\n");
}
mysql_free_result(result);
} int main(int arg, char *args[])
{
if(arg < )
return -;
mysql_init(&mysql); //相当于SQL内部初始化了一个TCP的socket,同时初始化了SQL必须的内存 //连接到mysql server
conn = mysql_real_connect(&mysql, args[], args[], args[], args[], , , );
if(conn == NULL)
{
printf("connect error, %s\n", mysql_error(&mysql));
return -;
} if(mysql_query(conn, "SET NAMES utf8") != )
{
printf("设置字符集错误,%s\n", mysql_error(&mysql));
} char buf[BUFSIZE];
memset(buf, , sizeof(buf));
strcpy(buf, "请选择\n1:插入\n2:删除\n3:修改\n4:查询\n");
write(STDOUT_FILENO, buf, strlen(buf));
memset(buf, , sizeof(buf));
read(STDIN_FILENO, buf, sizeof(buf));
if(strncmp(buf, "", ) == ) //用户输入的4
{
memset(buf, , sizeof(buf));
strcpy(buf, "请输入任意的SELECT语句");
write(STDOUT_FILENO, buf, strlen(buf));
memset(buf, , sizeof(buf));
read(STDIN_FILENO, buf, sizeof(buf));
selectname(buf);
}
else
{
if(strncmp(buf, "", ) == ) //用户输入的1
{
insertname(buf);
}
if(strncmp(buf, "", ) == ) //用户输入的2
{
deletename(buf);
}
if(strncmp(buf, "", ) == ) //用户输入的3
{
updatename(buf);
} if(mysql_query(conn, buf) != )
{
printf("设置字符集错误,%s\n", mysql_error(&mysql));
} }
mysql_close(conn);
puts("Hello World\n");
return EXIT_SUCCESS;
}
linux c下mysql编程样例的更多相关文章
- 解决Linux系统下Mysql数据库中文显示成问号的问题
当我们将开发好的javaWEB项目部署到linux系统上,操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题! 打 ...
- linux系统下MySQL表名区分大小写问题
linux系统下MySQL表名区分大小写问题 https://www.cnblogs.com/jun1019/p/7073227.html [mysqld] lower_case_table_name ...
- LINUX系统下MySQL 压力测试工具super smack
摘要:1.源文件下载地址:http://vegan.net/tony/supersmack/2.安装:注意在编译时,可以先把对应的libmysqlclient.so.*拷贝到/usr/lib3.测试: ...
- Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式)
Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 本机采用Ubuntu16.04系统,tar方式安装MySQL5.7.21 数据库安装文件夹为 /home/devil/mysql 现 ...
- Linux - centos7 下 MySQL(mariadb) 和 主从复制
目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...
- Linux系统环境下MySQL数据库源代码的安装
Linux系统环境下MySQL数据库源代码的安装 基本环境:CentOS Linux release 7.8.2003 (Core).MySQL5.6 一. 安装环境准备 若要在Linux系 ...
- Kafka在Linux上安装部署及样例测试
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...
- linux centos7下 c++编程
在Linux下与在windos下编程没啥区别,可以在windos上实现后,然后更改一些,移植到linux中 yum install gcc yum install gcc-c++ vi main.cp ...
- Linux(Ubuntu)下MySQL的安装与配置
转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...
随机推荐
- HDU 4662 MU Puzzle 简单找规律
没有任何变换(III变U和删UU操作)之前,I 的个数一定是2^x个(也就是2的整数次幂) 若仅考虑III变U,那么设U的个数为k,I 的个数变为2^x-3*k 再加上删除UU操作,假设我们删除了2* ...
- 关于 PHP 7 你必须知道的五件事
1.今年的计划表已出.PHP 7 时间表 RFC 投票一直通过, PHP 7 将在2015年10月发布.尽管有些延迟,但我们还是很高兴它在今年内发布.PHP 7 详细时间表由此查看. 2.PHP 要上 ...
- linux系统更改目录和文件的权限总结
对于属于你的文件,可以按照自己的需要改变其权限位的设置.在改变文件权限位设置之前,要仔细地想一想有哪些用户需要访问你的文件(包括你的目录).可以使用c h m o d命令来改变文件权限位的设置.这一命 ...
- Linux进程控制(三)
1. 进程间打开文件的继承 1.1. 用fork继承打开的文件 fork以后的子进程自动继承了父进程的打开的文件,继承以后,父进程关闭打开的文件不会对子进程造成影响. 示例: #include < ...
- 中文web font技术及方案
我们在日常需求中,经常会碰到视觉设计师对某个中文字体效果非常坚持的情况,因为页面是否高大上,字体选择是很重要的一个因素,选择合适的字体可以让页面更优雅.面对这种问题,我们通常以下方式来进行设计还原: ...
- Zookeeper工作原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...
- 转:asmx迷10分钟升级成wcf熟手指南
前言:本文旨在帮助从未接触过wcf(.svc文件)的webservice开发人员,快速将传统的webService/asmx技术迁移到wcf.高手就不用浪费时间往下看了:) 以下所有操作均为vs201 ...
- ISO中运行时简单使用及KVC补充
一.运行时简单使用 1.包含头文件<objc/message.h> 2.给对象发送消息的方法:objc_msgSend(id, SEL, ....) * 第1个参数是对象 * 第2个参数是 ...
- UTF8存储与显示
存储肯定是二进制存储,同一个字符(汉子)在不同的字符集下有对应的值,一个字符集相当于一个密码表,键名为字符,键值为二进制数(可表示为十进制,十六进制) UTF8是一个unicode字符集的编码规则,也 ...
- HDU 2026 首字母变大写
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int ma ...