一、命令行操作
1、启动/重启数据库
2.2 登陆mysql(必要输入暗码)
2.3 创建数据库
- 指令格式:create database 数据库名字;
- 例子:create database CD2401;
复制代码
2.4 查看数据库
2.5 切换到使用的数据库
- 指令格式:use 数据库名;
- 案例 : use CD2401;
复制代码
2.6查看目前所在数据库
2.7 删除数据库
- 指令格式:DROP database 数据库名;
- 案例 : DROP database CD2401;
复制代码 2.8 创建数据表
- 指令格式 :create table 表名(字段1 字段类型,字段2 字段类型……);
- 案例: create table hum(value int,data time);
复制代码 2.9 查看数据库中所有的表
2.10 查看表中字段
- 指令格式 :DESC 表名;
- 案例: DESC hum;
复制代码
2.11 增加表中信息(重点)
- 指令格式 :INSERT INTO 表名(数据列1,数据列2) VALUES(数据1,数据2);
- 案例1: INSERT INTO hum(value,data) VALUES(50,NOW());
- 案例2: INSERT INTO hum(value,data) VALUES(50,'2024-06-19 10:38:00');
复制代码
2.12 查看表中信息(重点)
- 指令格式 :SELECT * FROM 表名; (查看所有数据)
- 案例1: SELECT * FROM hum;
复制代码
- 案例2:SELECT value FROM hum; 查看特定的列
- 案例3:SELECT value,data FROM hum; 查看特定的列
复制代码
- 案例4:SELECT * FROM hum WHERE value > 45; 查看指定条件
- 案例5:SELECT * FROM hum WHERE data > "2024-06-19 10:37:00"; 查看指定条件
复制代码
- 案例6:SELECT * FROM hum ORDER BY data ASC;(时间排序,从早到晚)
- 案例7:SELECT * FROM hum ORDER BY data DESC;(时间排序,从晚到早)
复制代码
2.13 修改表中信息(重点)
- 2.13 修改表中信息(重点)
- 命令格式:UPDATE 表名 SET column1 =value1,column2 =value2,…… WHERE condition;
- 案例: UPDATE hum SET value =40 WHERE data ='2024-06-19 10:37:00';
复制代码
2.14 删除表中信息(重点)
- 命令格式 DELETE FROM 表名 WHERE 条件;
- 案例1: DELETE FROM hum WHERE data ='2024-06-19 10:38:00';
- 案例2: DELETE FROM hum;删除表中所有信息
复制代码
二、c语言操作数据库
2.1设置情况
- sudo apt-get install libmysqld-dev
复制代码 2.2 设置远程登陆
- UPDATE user set host ='%' where user = 'root'
复制代码
- sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码 44行修改设置为0.0.0.0
保存退出,重启MySQL。
2.3 使用c连接数据库
- #include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
- #include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
- #include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
- #include <string.h> //包含头文件string.h,功能是字符串处理函数。
- int main(int argc, char const *argv[])
- {
- MYSQL *ret; //定义MYSQL指针变量ret
- MYSQL mysql; //定义mysql结构体
- mysql_init(&mysql);//初始化mysql结构体
- //连接数据库
- ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
- if(ret==NULL)
- {
- printf("Connect MySQL failed\n");
- return 0;
- }
- printf("Connect MySQL success\n");
- return 0;
- }
复制代码 编译指令
- gcc MYSQL_0.c -lmysqlclient
复制代码
2.4使用C执行sql语句
- #include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
- #include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
- #include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
- #include <string.h> //包含头文件string.h,功能是字符串处理函数。
- int main(int argc, char const *argv[])
- {
- MYSQL *ret; //定义MYSQL指针变量ret
- MYSQL mysql; //定义mysql结构体
- mysql_init(&mysql);//初始化mysql结构体
- //连接数据库
- ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
- if(ret==NULL)
- {
- printf("Connect MySQL failed\n");
- return 0;
- }
- printf("Connect MySQL success\n");
- //执行SQL语句
- /*组装SQL语句*/
- //char sql[100];
- //strcpy(sql,"SELECT * FROM CD2401.student");
- char *sql_str="INSERT INTO hum(value,data) VALUES(50,NOW());";
- if(mysql_query(&mysql,sql_str))
- {
- printf("SQL execute failed:%s\n",mysql_error(&mysql));
- return 0;
- }
- printf("SQL execute success\n");
-
-
- //关闭连接
- mysql_close(&mysql);
- return 0;
- }
复制代码 2.5 案例
- #include <stdio.h> //引入标准输入输出库
- #include <stdlib.h> //引入标准库
- #include <string.h> //引入字符串处理库
- #include <unistd.h> //引入unistd.h库
- #include <fcntl.h> //引入fcntl.h库
- #include <termios.h> //引入termios.h库
- #include <mysql/mysql.h>
- int main()
- {
- int fd; //文件描述符
- struct termios options; //终端属性结构体
- unsigned char buffer[256]; //接收到的数据缓冲区
- int bytes_read; //读取的字节数
- char name_type[10];
- int value[10];
- MYSQL *ret; //定义MYSQL指针变量ret
- MYSQL mysql; //定义mysql结构体
- mysql_init(&mysql);//初始化mysql结构体
- //连接数据库
- ret=mysql_real_connect(&mysql,"10.7.164.132","root","1234","hthl",3306,NULL,0);
- if(ret==NULL)
- {
- printf("Connect MySQL failed\n");
- return 0;
- }
- printf("Connect MySQL success\n");
- //尝试打开串口
- fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);//尝试以读写方式打开串行端口/dev/ttyUSB0
- if(fd < 0) //打开失败
- {
- perror("opaaen");
- exit(1);
- }
- else //打开成功
- {
- fcntl(fd,F_SETFL, 0); //设置非阻塞模式
- printf("Serial port opened successfully.\n");
- }
- tcgetattr(fd, &options); //获取终端属性
- cfsetispeed(&options, B115200); //设置输入波特率为115200
- cfsetospeed(&options, B115200); //设置输出波特率为115200
- options.c_cflag &= ~PARENB; //设置无校验位
- options.c_cflag &= ~CSTOPB; //设置1位停止位
- options.c_cflag &= ~CSIZE; //设置数据位数为8位
- options.c_cflag &= ~CRTSCTS;//关闭硬件流控
- options.c_cflag |= CS8;
- options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //设置非规范模式
- //关闭流控制
- options.c_iflag &= ~(IXON | IXOFF | IXANY);
- tcsetattr(fd, TCSANOW, &options); //设置终端属性
- printf("port set to 115200, 8N1.\n");
- while(1)
- {
- tcflush(fd, TCIFLUSH); //清空输入缓存
- bytes_read = read(fd, buffer, 256); //读取串口数据
- if(bytes_read > 0) //有数据
- {
- // printf("Received %d bytes: ", bytes_read);
- // for(int i = 0; i < bytes_read; i++)
- // {
- // printf("%02X ", buffer[i]); //打印十六进制数据
- // }
- // printf("\n");
-
- if(strlen(buffer) == 0)
- {
- continue;
- }
- char *table_name;
- int value = 0;
- table_name = strtok(buffer,":");
- value = atoi(strtok(NULL,":"));
- char buf[128] = {0};
- sprintf(buf,"INSERT INTO %s(value,data) VALUES(%d,now())",table_name,value);
- if(mysql_query(&mysql,buf))
- {
- printf("SQL exeute failed:%s\n",mysql_error(&mysql));
- return 0;
- }
- printf("SQL execute success\n");
- }
- else if(bytes_read < 0) //读取失败
- {
- perror("read");
- exit(1);
- }
- }
- close(fd); //关闭串口
- mysql_close(&mysql);n g
- }
复制代码 2.6使用c执行插入操作
- #include <stdio.h> //引入标准输入输出库
- #include <stdlib.h> //引入标准库
- #include <string.h> //引入字符串处理库
- #include <unistd.h> //引入unistd.h库
- #include <fcntl.h> //引入fcntl.h库
- #include <termios.h> //引入termios.h库
- int main()
- {
-
- int fd; //文件描述符
- struct termios options; //终端属性结构体
- unsigned char buffer[256]; //接收到的数据缓冲区
- int bytes_read; //读取的字节数
- //尝试打开串口
- fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);//尝试以读写方式打开串行端口/dev/ttyUSB0
- if(fd < 0) //打开失败
- {
- perror("opaaen");
- exit(1);
- }
- else //打开成功
- {
- fcntl(fd,F_SETFL, 0); //设置非阻塞模式
- printf("Serial port opened successfully.\n");
- }
- tcgetattr(fd, &options); //获取终端属性
- cfsetispeed(&options, B115200); //设置输入波特率为115200
- cfsetospeed(&options, B115200); //设置输出波特率为115200
- options.c_cflag &= ~PARENB; //设置无校验位
- options.c_cflag &= ~CSTOPB; //设置1位停止位
- options.c_cflag &= ~CSIZE; //设置数据位数为8位
- options.c_cflag &= ~CRTSCTS;//关闭硬件流控
- options.c_cflag |= CS8;
- options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //设置非规范模式
- //关闭流控制
- options.c_iflag &= ~(IXON | IXOFF | IXANY);
-
- tcsetattr(fd, TCSANOW, &options); //设置终端属性
- printf("port set to 115200, 8N1.\n");
- while (1)
- {
- size_t bytes_written = write(fd,"Servo_ON\r\n",10);
- if (bytes_written < 0) //发送失败
- {
- perror("write");
- exit(1);
- }
- else //发送成功
- {
- printf("Sent %ld bytes.\n", bytes_written);
- }
- usleep(500000);
- }
-
- }
复制代码
3.5 使用C执行sql查询语句
- #include <stdio.h> //包含头文件stdio.h,功能是输入输出函数。
- #include <mysql/mysql.h> //包含头文件mysql.h,功能是访问MySQL数据库。
- #include <stdlib.h> //包含头文件stdlib.h,功能是提供常用函数。
- #include <string.h> //包含头文件string.h,功能是字符串处理函数。
- int main(int argc, char const *argv[])
- {
- MYSQL *ret; //定义MYSQL指针变量ret
- MYSQL mysql; //定义mysql结构体
- mysql_init(&mysql);//初始化mysql结构体
- //连接数据库
- ret=mysql_real_connect(&mysql,"10.7.164.82","root","123456","CD2401",3306,NULL,0);
- if(ret==NULL)
- {
- printf("Connect MySQL failed\n");
- return 0;
- }
- printf("Connect MySQL success\n");
- //执行SQL语句
- /*组装SQL语句*/
- char *sql_str="SELECT * FROM hum ORDER BY data DESC LIMIT 1";//查询数据,安装时间降序排列,取第一条数据
- if(mysql_query(&mysql,sql_str))
- {
- printf("SQL execute failed:%s\n",mysql_error(&mysql));
- return 0;
- }
- printf("SQL execute success\n");
- //储存查询结果
- MYSQL_RES *result=mysql_store_result(&mysql);
- if(result==NULL)
- {
- printf("SQL result failed:%s\n",mysql_error(&mysql));
- return 0;
- }
- printf("SQL result success\n");
- //输出查询结果
- MYSQL_ROW row;
- row=mysql_fetch_row(result);
- if(row==NULL)
- {
- printf("SQL fetch failed:%s\n",mysql_error(&mysql));
- return 0;
- }
- else
- {
- printf("humidity value :%d,date :%s\n",row[0],row[1]);
- }
- //释放查询结果
- mysql_free_result(result);
-
- //关闭连接
- mysql_close(&mysql);
- return 0;
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |