Node中怎么连接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); }); };
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联网站建设公司行业资讯频道,感谢您对创新互联建站的支持。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、建站服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。