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 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 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简单命令代码集锦
2007/09/24 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
python简单实现计算过期时间的方法
2015/06/09 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python实现感知器算法详解
2017/12/19 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
材料成型及控制工程专业求职信
2014/06/19 职场文书
课外科技活动总结
2014/08/27 职场文书
天下第一关导游词
2015/02/06 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python