目录

数据库建模与建库建表

mysql数据库编程连接与插入数据

在 Node  Server 服务器上通过SQL语句在数据库服务器上插入信息

mysql数据库的查询操作

mysql数据删除与存储过程调用

完整代码:

数据库建模与建库建表

  1. 提出需求,保存用户的姓名性别,放在一个表格中。
  2. 先在数据库服务器创建一个数据库。
  3. 使用创建的数据库创建User表。
  4. 显示table。

CREATE DATABASE GQ_DB;    #创建数据库

SHOW DATABASES;

USE GQ_DB;                              #使用数据库

CREATE TABLE TBL_USER(    #创建User表
U_ID INT PRIMARY KEY AUTO_INCREMENT,
U_NAME VARCHAR(32),
U_GENGDER VARCHAR(8)
);

SHOW TABLES;                        #显示table

注意事项:写SQL语句的时候。a.建议大写 b.在每个表的前面加上TBL,数据库加DB。再做一个项目之前首先想到的就是数据库建模。

mysql数据库编程连接与插入数据

首先建立连接,上面传输的是SQL语句。

SELECT *FROM TBL_USER;

INSERT TBL_USER(U_NAME, U_GENGDER) VALUES('GQ', 'man');    #插入姓名性别

SELECT *FROM TBL_USER;

在 Node  Server 服务器上通过SQL语句在数据库服务器上插入信息

首先,需要在NS服务器上安装MySQL开发工具,在Ubuntu上执行下面命令:

sudo apt-get install libmysqlclient-dev

利用代码实现:


#include<stdio.h>#include<mysql.h>#include<string.h>#define GQ_DB_SERVER_IP              "192.168.80.128"
#define GQ_DB_SERVER_PORT            3306#define GQ_DB_SERVER_USERNAME       "admin"
#define GQ_DB_SERVER_PASSWORD        "521125"#define GQ_DB_SERVER_DEFAULTBD    "GQ_DB" #define SQL_INSERT_TBL_USER          "INSERT TBL_USER(U_NAME, U_GENGDER) VALUES('GQ', 'man'); "//C U R D  int main(){MYSQL mysql;   //操作句柄  mysql | (管道)if(NULL == mysql_init(&mysql)){printf("mysql_init: %s\n", mysql_error(&mysql));return -1;}if(!mysql_real_connect(&mysql, GQ_DB_SERVER_IP, GQ_DB_SERVER_USERNAME,GQ_DB_SERVER_PASSWORD, GQ_DB_SERVER_DEFAULTBD, GQ_DB_SERVER_PORT, NULL, 0)){printf("mysql_real_connect: %s\n", mysql_error(&mysql));return -2;}//mysql --> insertif(mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))){printf("mysql_real_query: %s\n",mysql_error(&mysql));}mysql_close(&mysql);return 0;}

编译命令:

gcc -o mysql mysql.c -I /usr/include/mysql/       # -I加入系统头文件

gcc -o mysql mysql.c -I /usr/include/mysql/ -lmysqlclient    # -lmysqlclient 引入编译所需库

代码结果:

我们修改第17行的信息.,增加用户信息。

#define SQL_INSERT_TBL_USER          "INSERT TBL_USER(U_NAME, U_GENGDER) VALUES('GCJ', 'woman');

注意:值得关注第28行与第33行的if判断,Linux的API大部分返回0为成功(第42行是如此),而mysql提供的28行与33行两个接口恰好相反。

mysql数据库的查询操作

至少需要四个步骤:

int Gq_mysql_select(MYSQL *handle){//mysql_real_query --> sqlif(mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))){printf("mysql_real_query: %s\n",mysql_error(handle));return -1;}//sotre -->MYSQL_RES *res = mysql_store_result(handle);if(res == NULL){printf("mysql_store_result: %s\n", mysql_error(handle));return -2;}//rows / fieldsint rows = mysql_num_rows(res);printf("rows: %d\n", rows);int fields = mysql_num_fields(res);printf("fields: %d\n", fields);//fetchMYSQL_ROW row;while((row = mysql_fetch_row(res))){int i = 0;for(i = 0; i < fields; i++){printf("%s\t", row[i]);}printf("\n");}mysql_free_result(res);return 0;}

代码运行结果:

mysql数据删除与存储过程调用

在MYSQL workbench 中输入如下命令:

DELETE FROM TBL_USER WHERE U_NAME='GQ';

出现了下面错误: DELETE FROM TBL_USER WHERE U_NAME='GQ'    Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.

版本5.6以后提供了按照主键删除的方式,U_NAME不是主键(key)。如果非要这么做我们可以设置成安全模式:

SET SQL_SAFE_UPDATES=0;                            #设置安全模式
DELETE FROM TBL_USER WHERE U_NAME='GQ';
SET SQL_SAFE_UPDATES=1;

SELECT *FROM TBL_USER;

可以看到用户GQ被删除成功。

代码实现时,我们要将三条语句一起实现,可以但是容易出错,这里我们引入一个存储过程,定义一个存储过程:

DELIMITER @@         #定义标识符,存储过程以什么结束
CREATE PROCEDURE PRCO_DELETE_USER(IN UNAME VARCHAR(32))#创建存储过程
BEGIN
SET SQL_SAFE_UPDATES=0;
DELETE FROM TBL_USER WHERE U_NAME=UNAME;
SET SQL_SAFE_UPDATES=1;
END @@

CALL PROC_DELETE_USER('GQ')                        #D调用存储过程

下面看如何在代码实现,定义一个存储过程。

#define SQL_DELETE_TBL_USER           "CALL PROC_DELETE_USER('GQ')"// mysql -->deleteprintf("case: mysql -->delete\n");
#if 1if(mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))){printf("mysql_real_query: %s\n",mysql_error(&mysql));}#endif

我们先插入用户GQ再进行删除的结果:

完整代码:

#include<stdio.h>#include<mysql.h>#include<string.h>#define GQ_DB_SERVER_IP              "192.168.80.128"
#define GQ_DB_SERVER_PORT            3306#define GQ_DB_SERVER_USERNAME       "admin"
#define GQ_DB_SERVER_PASSWORD        "521125"#define GQ_DB_SERVER_DEFAULTBD    "GQ_DB" #define SQL_INSERT_TBL_USER          "INSERT TBL_USER(U_NAME, U_GENGDER) VALUES('GQ', 'man'); "
#define SQL_SELECT_TBL_USER          "SELECT *FROM TBL_USER;"#define SQL_DELETE_TBL_USER           "CALL PROC_DELETE_USER('GQ')"int Gq_mysql_select(MYSQL *handle){//mysql_real_query --> sqlif(mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))){printf("mysql_real_query: %s\n",mysql_error(handle));return -1;}//sotre -->MYSQL_RES *res = mysql_store_result(handle);if(res == NULL){printf("mysql_store_result: %s\n", mysql_error(handle));return -2;}//rows / fieldsint rows = mysql_num_rows(res);printf("rows: %d\n", rows);int fields = mysql_num_fields(res);printf("fields: %d\n", fields);//fetchMYSQL_ROW row;while((row = mysql_fetch_row(res))){int i = 0;for(i = 0; i < fields; i++){printf("%s\t", row[i]);}printf("\n");}mysql_free_result(res);return 0;}//C U R D  int main(){MYSQL mysql;   //操作句柄  mysql | (管道)if(NULL == mysql_init(&mysql)){printf("mysql_init: %s\n", mysql_error(&mysql));return -1;}if(!mysql_real_connect(&mysql, GQ_DB_SERVER_IP, GQ_DB_SERVER_USERNAME,GQ_DB_SERVER_PASSWORD, GQ_DB_SERVER_DEFAULTBD, GQ_DB_SERVER_PORT, NULL, 0)){printf("mysql_real_connect: %s\n", mysql_error(&mysql));return -2;}//mysql --> insertprintf("case: mysql --> insert\n");
#if 1if(mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))){printf("mysql_real_query: %s\n",mysql_error(&mysql));}#endifGq_mysql_select(&mysql);// mysql -->deleteprintf("case: mysql -->delete\n");
#if 1if(mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))){printf("mysql_real_query: %s\n",mysql_error(&mysql));}#endifGq_mysql_select(&mysql);mysql_close(&mysql);return 0;}

数据库mysql项目实战 一相关推荐

  1. 大话数据库MySQL项目实战的那几个点

    一.MySQL简介 MySQL一般特制完整的MySQLRDBMS,是一个开源的关系型数据库管理系统(Relational Database Management System),现在属于Oracle公 ...

  2. 大数据之数据库mysql优化实战(一)

    2019独角兽企业重金招聘Python工程师标准>>> :facepunch: 大数据之数据库mysql优化实战(一) 首先你要有数据,不然怎么测试,几百条就算了,还没跑就完了. 本 ...

  3. SpringBoot+MyBatis+MYSQL项目实战六(新增收货地址)

    SpringBoot+MyBatis+MYSQL项目实战六(新增收货地址) 项目源码地址:电脑商城实战 点击新增收货地址 一:新增收货地址--数据表的创建 CREATE TABLE t_address ...

  4. 高性能MySQL实战第12讲:海量数据MySQL项目实战

    你好,我是你的数据库老师周彦伟,欢迎来到第 10 课时"MySQL 亿级数据库项目实战",这是本系列课程的最后一课时,本课时的主要内容包含 MySQL 典型数据库架构介绍.MySQ ...

  5. egg mysql 项目实战,egg.js创建项目,目录介绍,简单使用,sequelize mysql使用

    1.egg项目的创建 创建项目 npm init egg --type=simple 安装依赖 npm i 依赖安装完成后运行命令 npm run dev 即可运行项目 参考官方文档 https:// ...

  6. hapi mysql项目实战路由初始化_用hapi.js mysql和nuxt.js(vue ssr)开发仿简书的博客项目...

    前言: 预览: 开始: npm i 把mysql配置好 npm run server or npm run dev 实现功能: 用户: 登录.注册.用户资料修改,详情页面,类似于简书的文章数量.总字数 ...

  7. mysql初始化加载插件_Hapi+MySql项目实战配置插件-加载文件渲染母版(三)

    加载插件 一般在其它node框架下,我们安装好插件直接require('插件')就能正常使用了,但是在Hapi下我们必须要Server.register()方法,才能正常使用插件.举个例子: 1 se ...

  8. Servlet与表单、数据库综合项目实战【学生信息管理】

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  9. linux mysql 实战_Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06

    Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06 视频教程学习地址 Oracle/MySQL数据库学习专用QQ群:336282998.189070296 学完风哥本课程能熟悉 ...

  10. 高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(六)

    6:高颜值JavaFX数据库-九讲之六 项目效果图 功能点实现 内部优化 类结构示例 创建数据库连接类 1.创建类 2.数据库连接步骤 3.一百个注意事项 4.类的具体实现 5.错误显示的类 后记 高 ...

最新文章

  1. 微信9年:张小龙指明方向,微信AI全面开放NLP能力
  2. 有什么好的中小企业企业管理软件?
  3. Volatile 关键字 内存可见性
  4. R语言笔记-sample()函数
  5. Python 输出的空格问题
  6. 移动端开发注意之一二
  7. mui dtpicker 时间的设置 以及MUI的弹窗
  8. NVIDIA驱动瘫痪再重装的问题
  9. php git server,server.php
  10. opencv安装教程python3.7_Python3.7中安装openCV库的方法
  11. 第二章:HLK-7621开发板介绍
  12. Laravel文档梳理9、Blade模板
  13. 千呼万唤始出来 Google GDrive将于4月初正式推出
  14. 英语四级XYZ字母开头单词+托福高频单词
  15. The Google File System 中文版论文(转载)
  16. linux服务器的Gzip文件压缩方法
  17. 笔计算机维修,电子计算器常见故障 计算器常用维修方法
  18. z中国禽肉深加工市场盈利动态与竞争前景分析报告2022-2027年
  19. 君澜酒店集团2019年度待开业“景澜”品牌酒店发布
  20. 国内航班行李托运尺寸规格要求

热门文章

  1. Unity 材质之_stander shader
  2. Unmapped Spring configuration files found. Please configure Spring facet
  3. html5播放加速,Video Speed Controller Chrome(HTML5视频加速播放插件) v0.3.2 官方免费版...
  4. 我读《非暴力沟通》- 马歇尔 *卢森堡 - 是什么蒙蔽了爱
  5. 请假通知(8-17~8-19)
  6. 好用的项目管理工具|选择Tracup的N种理由
  7. 《计算机入门》模拟卷 b卷,《计算机入门》模拟试卷B.doc
  8. 三、字符串拼接和占位符
  9. CS231n 课程(笔记内容 by Aries.Y)
  10. php计算圆的面积怎么带单位_圆的面积计算公式的教学演示工具的制作方法