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的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...
随机推荐
- 监听Activity进入后台(最小化),并根据时间判断是否超时,此解决办法可用于超时重登陆
通过重写一个继承自Activity的基类中的onUserLeaveHint()方法,当用户按Home键等操作使程序进入后台时即开始计时,当用户使程序恢复为前台显示时执行onResume()方法,在其中 ...
- 《c程序设计语言》读书笔记-字符型0-9转为数字0-9
#include <stdio.h> #define Num 10 int atoi(char s[]); int main() { int c,i = 0; char s[Num]; i ...
- VMware虚拟机中的常用文件介绍
虚拟机的文件管理由VMware Workstation来执行.一个虚拟机一般以一系列文件的形式储存在宿主机中,这些文件一般在由workstation为虚拟机所创建的那个目录中. 如下图所示:(< ...
- 线段树总结 (转载 里面有扫描线类 还有NotOnlySuccess线段树大神的地址)
转载自:http://blog.csdn.net/shiqi_614/article/details/8228102 之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnl ...
- java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.<init>(Ljava/lang/Class;)V
相应我,是因为你SPRING MVC的包没有加全.你可以新建一个WEB项目.加入SPRING 3.0 的所有包.主要是WEB类的.就可以解决这个问题了.关键就是少包.特别是你的项目原来是SRPING ...
- jQuery实例-记住登录信息
本文介绍下jquery 记住登录信息的方法,引入jquery.cookie.js文件,实现记住登录信息,有需要的朋友参考下. 首先,导入jquery.cookie.js $(function(){ / ...
- 使用Phalcon开发工具碰到的数据库问题"Table 'XXX' doesn't exist in database when dumping meta-data for XXX"
使用Phalcon开发工具,通过命令行生成程序框架 设置好config.php,在对数据库进行读取.保存数据的时候出现了问题“Table 'XXX' doesn't exist in database ...
- hadoop DataNode实现分析
在前面说hadoop整体实现的时候, 说过DataNode的需要完成的首要任务是K-V存储. 第二个功能是 完成和 ...
- Android 程序员必须掌握的三种自动化测试方法
在日常的开发中,尤其是app开发,因为不像web端那样 出错以后可以热更新,所以app开发 一般对软件质量有更高的要求(你可以想一下 一个发出去的版本如果有重大缺陷 需要强制更新新客户端是多么蛋疼的事 ...
- JBPM4入门——7.等待节点的单条线手动执行
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...