首页 >> js开发 >> JavaScriptnode.js如何操作MySQL数据库
JavaScriptnode.js如何操作MySQL数据库
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
MySQL数据库作为最流行的开源数据库。基本上是每个web开发者必须要掌握的数据库程序之一了。基本使用基本使用node.js上,最受欢迎的mysql包就是mysql模块。
npm install mysql
npm install mysql然后在js脚本里面直接引用进来
var mysql
= require('mysql');
var mysql
= require('mysql');配置mysql的数据库连接。
var connection = mysql.createConnection({
host
: 'ip',
user
: '用户名',
password : '密码',
database : 'dbname'
});
connection.connect();
var connection = mysql.createConnection({
host
: 'ip',
user
: '用户名',
password : '密码',
database : 'dbname'
});
connection.connect();这样就拿到了一个连接。然后就可以愉快的进行各种curd操作了。node.js对数据库的curd都在query这个方法里面。这点和ado.net有很大的区别。你的所有的操作,都从query的回调函数里面获得结果
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});连接池操作连接池操作在单机软件中,我们之间使用简单获得一个连接,然后就行了。但是在面向互联网的web服务里面,频繁的创建和关闭连接,是很消耗服务器性能的。于是我们的前辈们发明了各种池子。比如多线程操作中的线程池,游戏开发中的对象池,当然还包括数据库操作的连接池。创建连接池:
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 连接池数量,
host
: 'ip地址',
user
: '账号',
password
: '密码',
database
: '数据库名称'
});
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 连接池数量,
host
: 'ip地址',
user
: '账号',
password
: '密码',
database
: '数据库名称'
});然后就是和上文一样的curd操作
//从连接池中获取一个连接
pool.getConnection(function(err, connection) {
if (err) throw err; // not connected!
// 使用这个连接curd
connection.query('SELECT something FROM sometable', function (error, results, fields) {
// 使用完之后,记得把这个连接放到连接池里面去
connection.release();
// Handle error after the release.
if (error) throw error;
});
});
//从连接池中获取一个连接
pool.getConnection(function(err, connection) {
if (err) throw err; // not connected!
// 使用这个连接curd
connection.query('SELECT something FROM sometable', function (error, results, fields) {
// 使用完之后,记得把这个连接放到连接池里面去
connection.release();
// Handle error after the release.
if (error) throw error;
});
});如果你的程序要退出,请把调用连接池的end()方法。不然程序会卡在后台,一直退出失败。封装成Promise封装成Promise在ES6中,可以直接用和C#的await一样的语法去调用js的异步函数。但是要求这个函数必须是async声明和返回值是Promise对象。
query = function (sql, arr, callback) {
console.log('获取一个连接');
return new Promise(function (resolve, reject) {
pool.getConnection(function (err, connection) {
if (err) {
reject(err);// not connected!
} else {
console.log('开始查询');
connection.query(sql, arr, function (error, results, fields) {
connection.release();
console.log('连接已经释放,返回结果');
if (error) reject(error);
// callback && callback(results, fields)
resolve({
rows: results,
fields: fields
})
});
}
});
})
}
query = function (sql, arr, callback) {
console.log('获取一个连接');
return new Promise(function (resolve, reject) {
pool.getConnection(function (err, connection) {
if (err) {
reject(err);// not connected!
} else {
console.log('开始查询');
connection.query(sql, arr, function (error, results, fields) {
connection.release();
console.log('连接已经释放,返回结果');
if (error) reject(error);
// callback && callback(results, fields)
resolve({
rows: results,
fields: fields
})
});
}
});
})
}简单的用法到这里就结束了。当然还有更高级的用法,比如MySQL的Cluster操作等。有兴趣的话,可以去研究,因为我目前用不到这种功能,所有就不往后去深究了。以上就是node.js如何操作MySQL数据库的详细内容,关于node.js 操作数据库的资料请关注其它相关文章!
npm install mysql
npm install mysql然后在js脚本里面直接引用进来
var mysql
= require('mysql');
var mysql
= require('mysql');配置mysql的数据库连接。
var connection = mysql.createConnection({
host
: 'ip',
user
: '用户名',
password : '密码',
database : 'dbname'
});
connection.connect();
var connection = mysql.createConnection({
host
: 'ip',
user
: '用户名',
password : '密码',
database : 'dbname'
});
connection.connect();这样就拿到了一个连接。然后就可以愉快的进行各种curd操作了。node.js对数据库的curd都在query这个方法里面。这点和ado.net有很大的区别。你的所有的操作,都从query的回调函数里面获得结果
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});连接池操作连接池操作在单机软件中,我们之间使用简单获得一个连接,然后就行了。但是在面向互联网的web服务里面,频繁的创建和关闭连接,是很消耗服务器性能的。于是我们的前辈们发明了各种池子。比如多线程操作中的线程池,游戏开发中的对象池,当然还包括数据库操作的连接池。创建连接池:
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 连接池数量,
host
: 'ip地址',
user
: '账号',
password
: '密码',
database
: '数据库名称'
});
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 连接池数量,
host
: 'ip地址',
user
: '账号',
password
: '密码',
database
: '数据库名称'
});然后就是和上文一样的curd操作
//从连接池中获取一个连接
pool.getConnection(function(err, connection) {
if (err) throw err; // not connected!
// 使用这个连接curd
connection.query('SELECT something FROM sometable', function (error, results, fields) {
// 使用完之后,记得把这个连接放到连接池里面去
connection.release();
// Handle error after the release.
if (error) throw error;
});
});
//从连接池中获取一个连接
pool.getConnection(function(err, connection) {
if (err) throw err; // not connected!
// 使用这个连接curd
connection.query('SELECT something FROM sometable', function (error, results, fields) {
// 使用完之后,记得把这个连接放到连接池里面去
connection.release();
// Handle error after the release.
if (error) throw error;
});
});如果你的程序要退出,请把调用连接池的end()方法。不然程序会卡在后台,一直退出失败。封装成Promise封装成Promise在ES6中,可以直接用和C#的await一样的语法去调用js的异步函数。但是要求这个函数必须是async声明和返回值是Promise对象。
query = function (sql, arr, callback) {
console.log('获取一个连接');
return new Promise(function (resolve, reject) {
pool.getConnection(function (err, connection) {
if (err) {
reject(err);// not connected!
} else {
console.log('开始查询');
connection.query(sql, arr, function (error, results, fields) {
connection.release();
console.log('连接已经释放,返回结果');
if (error) reject(error);
// callback && callback(results, fields)
resolve({
rows: results,
fields: fields
})
});
}
});
})
}
query = function (sql, arr, callback) {
console.log('获取一个连接');
return new Promise(function (resolve, reject) {
pool.getConnection(function (err, connection) {
if (err) {
reject(err);// not connected!
} else {
console.log('开始查询');
connection.query(sql, arr, function (error, results, fields) {
connection.release();
console.log('连接已经释放,返回结果');
if (error) reject(error);
// callback && callback(results, fields)
resolve({
rows: results,
fields: fields
})
});
}
});
})
}简单的用法到这里就结束了。当然还有更高级的用法,比如MySQL的Cluster操作等。有兴趣的话,可以去研究,因为我目前用不到这种功能,所有就不往后去深究了。以上就是node.js如何操作MySQL数据库的详细内容,关于node.js 操作数据库的资料请关注其它相关文章!