nodejs mysql6_Nodejs学习笔记(六)--- Mysql连接

安装

安装

npm install mysql

0b78d0053b0d

image.png

测试MySQL

建库并插入记录

CREATE DATABASE IF NOT EXISTS learn_nodejs CHARACTER SET UTF8;

USE learn_nodejs;

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `userinfo`;

CREATE TABLE `userinfo` (

`Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',

`UserName` varchar(64) NOT NULL COMMENT '用户名',

`UserPass` varchar(64) NOT NULL COMMENT '用户密码',

PRIMARY KEY (`Id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

show databases

0b78d0053b0d

image.png

0b78d0053b0d

image.png

nodejs连接mysql -- 1_mysql.js

//1_mysql.js

var mysql = require('mysql'); //调用mysql模块

//创建一个connection

var connection = mysql.createConnection({

host : '192.168.41.36',

user : 'root',

password : 'admin',

port: '3306',

database: 'learn_nodejs',

});

//建立连接

connection.connect(function(err){

if(err){

console.log('connection connect err - :'+err);

return;

}

console.log('connection connect success!');

});

//执行sql

connection.query('select 1 AS solution', function(err,rows,fields){

if(err){

console.log('connection query err - :'+err);

return;

}

console.log('solution :'+rows[0].solution);

});

//关闭 connection

connection.end(function(err){

if(err){

console.log('connection end err - :'+err);

return;

}

console.log('connection end success!');

});

报错:

0b78d0053b0d

image.png

原因:用户未赋权

解决:

主要赋权sql

1. GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

2.FLUSH PRIVILEGES;

0b78d0053b0d

image.png

执行返回显示:

0b78d0053b0d

image.png

ps:这里链接是当时另外的一个库,算作是库链接的测试,下面真实表单库还是在 learn_nodejs,这个当时是上周写的,后来又重新整理下,截图没做修改,意思到了就好,在此做个说明。

Connection Options

host:主机地址 (默认:localhost)

user:用户名

password:密码

port:端口号 (默认:3306)

database:数据库名

charset:连接字符集(默认:'UTF8_GENERAL_CI',注意字符集的字母都要大写)

localAddress:此IP用于TCP连接(可选)

socketPath:连接到unix域路径,当使用 host 和 port 时会被忽略

timezone:时区(默认:'local')

connectTimeout:连接超时(默认:不限制;单位:毫秒)

stringifyObjects:是否序列化对象(默认:'false' ;与安全相关https://github.com/felixge/node-mysql/issues/501)

typeCast:是否将列值转化为本地JavaScript类型值 (默认:true)

queryFormat:自定义query语句格式化方法 https://github.com/felixge/node-mysql#custom-format

supportBigNumbers:数据库支持bigint或decimal类型列时,需要设此option为true (默认:false)

bigNumberStrings:supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false)

dateStrings:强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScript Date类型(默认:false)

debug:开启调试(默认:false)

multipleStatements:是否许一个query中有多个MySQL语句 (默认:false)

flags:用于修改连接标志,更多详情:https://github.com/felixge/node-mysql#connection-flags

ssl:使用ssl参数(与crypto.createCredenitals参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑Amazon RDS的配置文件

实现增,删,改,查

//1_mysql.js

var mysql = require('mysql'); //调用mysql模块

//创建一个connection

var connection = mysql.createConnection({

host : '192.168.41.36',

user : 'root',

password : 'admin',

port: '3306',

database: 'tiany_learnnodejs',

});

//建立连接

connection.connect(function(err){

if(err){

console.log('connection connect err - :'+err);

return;

}

console.log('connection connect success!');

});

var userAddSql = 'INSERT INTO userinfo(Id,UserName,UserPass) VALUES(0,?,?)';

var userAddSql_Params = ['tiany', 'tiany'];

//增

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);

console.log('-----------------------------------------------------------------');

});

//关闭 connection

connection.end(function(err){

if(err){

console.log('connection end err - :'+err);

return;

}

console.log('connection end success!');

});

0b78d0053b0d

image.png

执行成功:

0b78d0053b0d

image.png

数据库中显示:

0b78d0053b0d

image.png

//3_mysql_update.js

var mysql = require('mysql'); //调用mysql模块

//创建一个connection

var connection = mysql.createConnection({

host : '192.168.41.36',

user : 'root',

password : 'admin',

port: '3306',

database: 'learn_nodejs',

});

//建立连接

connection.connect(function(err){

if(err){

console.log('connection connect err - :'+err);

return;

}

console.log('connection connect success!');

});

var userModSql = 'UPDATE userinfo SET UserName = ?,UserPass = ? WHERE Id = ?';

var userModSql_Params = ['liuzy', 'liuzy',1];

//改

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

connection.end(function(err){

if(err){

console.log('connection end err - :'+err);

return;

}

console.log('connection end success!');

});

0b78d0053b0d

image.png

执行结果:

0b78d0053b0d

image.png

0b78d0053b0d

image.png

//5_mysql_delete.js

var mysql = require('mysql'); //调用mysql模块

//创建一个connection

var connection = mysql.createConnection({

host : '192.168.41.36',

user : 'root',

password : 'admin',

port: '3306',

database: 'learn_nodejs',

});

//建立连接

connection.connect(function(err){

if(err){

console.log('connection connect err - :'+err);

return;

}

console.log('connection connect success!');

});

var userGetSql = 'SELECT * FROM userinfo';

//查

connection.query(userGetSql,function (err, result) {

if(err){

console.log('query ERROR - ',err.message);

return;

}

console.log('--------------------------query----------------------------');

console.log(result);

console.log('---------------------------------------------------------------');

});

//关闭 connection

connection.end(function(err){

if(err){

console.log('connection end err - :'+err);

return;

}

console.log('connection end success!');

});

0b78d0053b0d

image.png

执行结果:

0b78d0053b0d

image.png

//4_mysql_query.js

var mysql = require('mysql'); //调用mysql模块

//创建一个connection

var connection = mysql.createConnection({

host : '192.168.41.36',

user : 'root',

password : 'admin',

port: '3306',

database: 'learn_nodejs',

});

//建立连接

connection.connect(function(err){

if(err){

console.log('connection connect err - :'+err);

return;

}

console.log('connection connect success!');

});

var userDelSql = 'DELETE FROM userinfo';

//删

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

connection.end(function(err){

if(err){

console.log('connection end err - :'+err);

return;

}

console.log('connection end success!');

});

0b78d0053b0d

image.png

执行结果:

0b78d0053b0d

image.png

0b78d0053b0d

image.png

结束数据库连接两种方法和区别

结束连接其实有两种方法end(),destory();

end()

end()方法在queries都结束后执行,end()方法接收一个回调函数,queries执行出错,仍然后结束连接,错误会返回给回调函数err参数,可以在回调函数中处理!

destory()

比较暴力,没有回调函数,即刻执行,不管queries是否完成!

连接池Pooling connections

另外:

在nodejs学习笔记(一)时已经写明笔记参考来源,也算是站在巨人的肩膀上,在此再次附上链接 http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html ,分享给大家,有兴趣的朋友可以直接去看看,再次感谢porschev大神资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值