Node连接mysql数据库方法介绍
发布时间 - 2026-01-10 22:53:53 点击率:次使用Node做Web开发,基本上都是使用NoSQL数据库,最频繁的就是使用MongoDB了,自己做了一些简单的Web开发,为了降低学习门槛,一直使用MySQL来做数据库。这里简单介绍一下连接MySQL数据库的方式,希望能帮助到其他人。
npm install --save mysql
使用上述命令安装完MySQL的模块后,就可以直接使用了,官网的DOCS里一个简单的例子如下就可以入门了。
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();
很简单的一个例子,从上面的例子可以得出:使用createConnection(option)方法创建一个连接对象,然后连接对象的connect()方法创建连接,最后使用query()方法执行SQL语句,返回结果作为回调函数的参数rows返回,rows为数组类型。
1. 连接
创建连接对象,需要传入连接数据库的一些连接参数,也就是createConnection(option)里的option,option是一个对象,以键值对的形式传入createConnection()方法里。上例列举出了最基本的参数:
- host 主机名
- user 连接数据库的用户
- password 密码
- database 数据库名称
还有其他的参数,可以查询下官方DOCS,这里不一一列举了,初期学习上面这些参数就足以。
2. 关闭
关闭一个连接使用end()方法,end()方法提供一个回调函数,如下:
connect.end(function(err){
console.log('End a connection');
});
这是建议使用的方法,end()方法会等待连接回调完成后才关闭连接。官方还提供了另外一种方法destroy()方法,这个方法直接关闭连接,不会等待回调完成。
举个简单的例子:
var mysql = require('mysql');
var option = require('./connect.js').option;
var conn = mysql.createConnection(option);
conn.query('select * from message',function(err,rows,fields){
if(!err){
console.log(rows);
}
});
conn.end(function(err){
console.log('end a connection');
});
最终结果会是:先打印完SELECT数据表结果后,再打印end a connection。而如果你将关闭方法换成conn.destroy();,那么你就别想返回任何结果了,因为还没等回调结束就已经终止连接了。
3. 连接池
连接池的原理是一开始就给你创建多个连接对象放在一个“池子”里,用的时候取一个,用完了放回“池子”里,在一定程度上是有利于节省系统开销的,因为连接对象是在最开始的时候就创建好了,使用的时候不再需要系统开销去创建数据库连接对象。官方DOCS介绍了连接方法:
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host : 'example.org',
user : 'bob',
password : 'secret',
database : 'my_db'
});
pool.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
创建连接池的方法是createPool(option),option里多了一个参数connectionLimit指的是一次性在连接池里创建多少个连接对象,默认10个。如果你想共享一个连接对象,可以使用下面方法进行连接;
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'example.org',
user : 'bob',
password : 'secret',
database : 'my_db'
});
pool.getConnection(function(err, connection) {
// Use the connection
connection.query( 'SELECT something FROM sometable', function(err, rows) {
// And done with the connection.
connection.release();
// Don't use the connection here, it has been returned to the pool.
});
// Use the connection
connection.query( 'SELECT something2 FROM sometable2', function(err, rows) {
// And done with the connection.
connection.release();
// Don't use the connection here, it has been returned to the pool.
});
});
使用一个连接对象执行两次query()函数。
4. 示例1
使用基本的连接方式来连接数据库,分别定义数据连接以及关闭的function,如下示例:
// connect.js 数据库连接与关闭
var mysql = require('mysql');
var config = require('./config.json'); // 将数据库连接参数写入mysql对象,即config.mysql
var connCount = 0; // 统计目前未关闭的连接
exports.getConn = function(){
connCount ++;
console.log('............................OPEN a connection, has '+ connCount + ' connection.');
return mysql.createConnection(config.mysql);
};
exports.endConn = function(conn){
conn.end(function(err){
if(!err){
connCount --;
console.log('.........................CLOSE a connection, has '+ connCount + ' connection.');
}
});
};
然后给个使用数据库的示例,
// db.js 查询用户信息
var connect = require('./connect.js'); // 引入数据连接方法
exports.getUser = function(username, callback){
var connection = connect.getConn();
var sql = 'select * from user where username = "' + username + '"';
connection.query(sql,function(err,rows,fields){
callback(err,rows,fields);
});
connect.endConn(connection);
}
5. 示例2
使用数据库连接池,同样先创建数据库连接池的方法,如下两种方式:
// connect.js 直接使用
var mysql = require('mysql');
var config = require('./config.json');
var pool = mysql.createPool(config.mysql);
exports.querySQL = function(sql,callback){
pool.query(sql, function(err,rows,fields){
callback(err,rows,fields);
});
}
// connect.js 使用getConnection方法
var mysql = require('mysql');
var config = require('./config.json');
var pool = mysql.createPool(config.mysql);
exports.querySQL = function(sql, callback){
pool.getConnection(function(err,conn){
conn.query(sql,function(err,rows,fields){
callback(err,rows,fields);
conn.release(); // 不要忘了释放
});
});
}
使用的时候,直接使用querySQL方法即可,如下:
// db.js 查询用户信息
var connect = require('./connect.js');
exports.getUser = function(username,callback){
var sql = 'select * from user where username = "' + username + '"';
connect.querySQL(sql,function(err,rows,fields){
callback(err,rows,fields);
});
};
官方是推荐使用连接池的方式进行连接的,但是,是直接使用pool.query()连接还是pool.getConnection()的方法来连接,官方并没有介绍其优劣,我简单做了个测试,貌似这两种方式并没有多大的区别,也就没再研究,有知道的烦请告知,谢了~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# node连接mysql数据库
# nodejs
# mysql数据库
# node.js连接数据库
# nodejs中操作mysql数据库示例
# 初步使用Node连接Mysql数据库
# Node.js操作mysql数据库增删改查
# node操作mysql数据库实例详解
# Nodejs使用mysql2操作数据库的方法完整讲解
# 连接池
# 回调
# 连接数据库
# 就可以
# 都是
# 是一个
# 这是
# 是在
# 好了
# 还没
# 放在
# 给你
# 出了
# 是有
# 你就
# 也就
# 多个
# 两种
# 其他的
# 推荐使用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用PHP快速搭建高效网站?分步指南
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
bootstrap日历插件datetimepicker使用方法
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
做企业网站制作流程,企业网站制作基本流程有哪些?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Laravel如何使用Service Container和依赖注入?(代码示例)
微信小程序 五星评分(包括半颗星评分)实例代码
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
如何在阿里云部署织梦网站?
Android GridView 滑动条设置一直显示状态(推荐)
zabbix利用python脚本发送报警邮件的方法
Laravel distinct去重查询_Laravel Eloquent去重方法
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
EditPlus中的正则表达式实战(6)
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel安装步骤详细教程_Laravel环境搭建指南
高端建站如何打造兼具美学与转化的品牌官网?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
如何为不同团队 ID 动态生成多个独立按钮
高防服务器:AI智能防御DDoS攻击与数据安全保障
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
香港服务器租用费用高吗?如何避免常见误区?
如何在万网自助建站平台快速创建网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
javascript读取文本节点方法小结
高性价比服务器租赁——企业级配置与24小时运维服务
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何在服务器上三步完成建站并提升流量?
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
JavaScript如何实现继承_有哪些常用方法
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
如何在宝塔面板中修改默认建站目录?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
Laravel如何使用Gate和Policy进行授权?(权限控制)
,网页ppt怎么弄成自己的ppt?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Android利用动画实现背景逐渐变暗

