Nodejs连接mysql并实现增、删、改、查操作的方法详解


Posted in NodeJs onJanuary 04, 2018

本文实例讲述了Nodejs连接mysql并实现增、删、改、查操作的方法。分享给大家供大家参考,具体如下:

一、准备

nodejs的教程,大多以操作mongodb为示例。但是mongodb有一些局限性,具体官网上有说。我打算用MySQL,因为多少还有点使用经验。先以研究为主。node-mysql,是目前最火的node下的mysql驱动。初步了用了一下,因为异步回调的这种方式,果然好多坑。

下面这个项目的package name是 mysql,版本是mysql@ 2.5.4

先说明下面的所示代码,均已以下代码开头,后面不在说明

var connection = mysql.createConnection({
 host   : '127.0.0.1',
 user   : 'root',
 password : 'root123',
 port: '3306',
 database: 'my_news_test',
});

代码什么意思很直白,如果想深入,可以去上面的官网查。像host,user之类的配置,写过MySQL数据库应用程序的,应该都很清楚,请自行修改相应参数。后面的代码,假定数据库”my_news_test”中有一个叫node_use的表,表有3个属性

id: 自增主键
name:名字,有unique的限制
age:年龄

测试MySQL

MySQL版本:5.5

二、建库并插入5条记录

Source Database    : my_news_test
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for node_user
-- ----------------------------
DROP TABLE IF EXISTS `node_user`;
CREATE TABLE `node_user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(30) DEFAULT NULL,
 `age` int(8) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of node_user
-- ----------------------------
INSERT INTO `node_user` VALUES ('1', 'admin', '32');
INSERT INTO `node_user` VALUES ('2', 'dans88', '45');
INSERT INTO `node_user` VALUES ('3', '张三', '35');
INSERT INTO `node_user` VALUES ('4', 'ABCDEF', '88');
INSERT INTO `node_user` VALUES ('5', '李小二', '65');

三、先测试一下环境

1、  首先需要安装nodejs 的mysql包

D:\User\myappejs4>npm install mysql
mysql@2.5.4 node_modules\mysql
├── require-all@0.0.8
├── bignumber.js@1.4.1
└── readable-stream@1.1.13 (inherits@2.0.1, string_decoder@0.10.31, isarray@0
.0.1, core-util-is@1.0.1)

2、编写nodejs与mysql交互的代码

//mysql.js
//首先需要安装nodejs 的mysql包
//npm install mysql
//编写nodejs与mysql交互的代码
var mysql = require('mysql');
var TEST_DATABASE = 'my_news_test';
var TEST_TABLE = 'node_user';
//创建连接
var client = mysql.createConnection({
 user: 'root',
 password: 'root123',
});
client.connect();
client.query("use " + TEST_DATABASE);
client.query(
 'SELECT * FROM '+TEST_TABLE,
 function selectCb(err, results, fields) {
  if (err) {
   throw err;
  }
    if(results)
   {
     for(var i = 0; i < results.length; i++)
     {
       console.log("%d\t%s\t%s", results[i].id, results[i].name, results[i].age);
     }
   }
  client.end();
 }
);

3、运行结果

D:\User\myappejs4>node mysqltest.js
1    admin  32
2    dans88 45
3    张三  35
4    ABCDEF  88
5    李小二 65

Nodejs连接mysql并实现增、删、改、查操作的方法详解

四、Node.js结合MySQL的增、删、改、查操作

1、增

var mysql = require('mysql');
var connection = mysql.createConnection({
 host   : '127.0.0.1',
 user   : 'root',
 password : 'root123',
 port: '3306',
 database: 'my_news_test',
});
connection.connect();
var userAddSql = 'INSERT INTO node_user(id,name,age) VALUES(0,?,?)';
var userAddSql_Params = ['Wilson', 55];
//增 add
connection.query(userAddSql,userAddSql_Params,function (err, result) {
    if(err){
     console.log('[INSERT ERROR] - ',err.message);
     return;
    }
    console.log('-------INSERT----------');
    //console.log('INSERT ID:',result.insertId);
    console.log('INSERT ID:',result);
    console.log('#######################');
});
connection.end();

运行如下

D:\User\myappejs4>node mysqltestadd.js
-------INSERT----------
INSERT ID: { fieldCount: 0,
 affectedRows: 1,
 insertId: 6,
 serverStatus: 2,
 warningCount: 0,
 message: '',
 protocol41: true,
 changedRows: 0 }
#######################

Nodejs连接mysql并实现增、删、改、查操作的方法详解

2、改

var mysql = require('mysql');
var connection = mysql.createConnection({
 host   : '127.0.0.1',
 user   : 'root',
 password : 'root123',
 port: '3306',
 database: 'my_news_test',
});
connection.connect();
var userModSql = 'UPDATE node_user SET name = ?,age = ? WHERE id = ?';
var userModSql_Params = ['Hello World',99,7];
//改 up
connection.query(userModSql,userModSql_Params,function (err, result) {
  if(err){
     console.log('[UPDATE ERROR] - ',err.message);
     return;
  }
 console.log('----------UPDATE-------------');
 console.log('UPDATE affectedRows',result.affectedRows);
 console.log('******************************');
});
connection.end();

运行结果如下

D:\User\myappejs4>node mysqltest_up.js
----------UPDATE-------------
UPDATE affectedRows 1
******************************

3、查操作

var mysql = require('mysql');
var connection = mysql.createConnection({
 host   : '127.0.0.1',
 user   : 'root',
 password : 'root123',
 port: '3306',
 database: 'my_news_test',
});
connection.connect();
var userGetSql = 'SELECT * FROM node_user';
//查 query
connection.query(userGetSql,function (err, result) {
    if(err){
     console.log('[SELECT ERROR] - ',err.message);
     return;
    }
    console.log('---------------SELECT----------------');
    console.log(result);
    console.log('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$');
});
connection.end();

运行的结果如下

D:\User\myappejs4>node mysqltest_query.js
---------------SELECT----------------
[ { id: 1, name: 'admin', age: 32 },
 { id: 2, name: 'dans88', age: 45 },
 { id: 3, name: '张三', age: 35 },
 { id: 4, name: 'ABCDEF', age: 88 },
 { id: 5, name: '李小二', age: 65 },
 { id: 6, name: 'Wilson', age: 55 } ]
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Nodejs连接mysql并实现增、删、改、查操作的方法详解

4、删除操作

var mysql = require('mysql');
var connection = mysql.createConnection({
 host   : '127.0.0.1',
 user   : 'root',
 password : 'root123',
 port: '3306',
 database: 'my_news_test',
});
connection.connect();
var userDelSql = 'DELETE FROM node_user WHERE id = 7';
//ɾ
connection.query(userDelSql,function (err, result) {
    if(err){
     console.log('[DELETE ERROR] - ',err.message);
     return;
    }
    console.log('-------------DELETE--------------');
    console.log('DELETE affectedRows',result.affectedRows);
    console.log('&&&&&&&&&&&&&&&&&');
});
connection.end();
运行的结果如下
D:\User\myappejs4>node mysqltest_del.js
-------------DELETE--------------
DELETE affectedRows 1
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Nodejs连接mysql并实现增、删、改、查操作的方法详解

增、删、改、查操作应会部完成了!

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
浅谈NodeJS中require路径问题
May 07 NodeJs
nodejs修复ipa处理过的png图片
Feb 17 NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 #NodeJs
详解NODEJS的http实现
Jan 04 #NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 #NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 #NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 #NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 #NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 #NodeJs
You might like
PHP多进程编程实例
2014/10/15 PHP
详解PHP队列的实现
2019/03/14 PHP
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
Python中表示字符串的三种方法
2017/09/06 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
python中yield的用法详解
2021/01/13 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
四群教育工作实施方案
2014/03/26 职场文书
村干部培训方案
2014/05/02 职场文书
2014年教研组工作总结
2014/11/26 职场文书
员工辞职信怎么写
2015/02/27 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers