当前位置: 首页 > 后端技术 > Node.js

Node如何连接mysql数据库

时间:2023-04-03 10:43:44 Node.js

使用Node做web开发,基本都是用NoSQL数据库,最常用的是MongoDB,自己做过一些简单的web开发,为了降低学习门槛,一直在用MySQL作为数据库。这里简单介绍一下连接MySQL数据库的方法,希望对大家有所帮助。npminstall--savemysql使用上面的命令安装好MySQL模块后,就可以直接使用了。官网DOCS中的一个简单示例如下上手。varmysql=require('mysql');varconnection=mysql.createConnection({host:'localhost',user:'me',password:'secret',database:'my_db'});connection.connect();connection.query('SELECT1+1ASsolution',function(err,rows,fields){if(err)throwerr;console.log('解决方案是:',rows[0].solution);});connection.end();一个很简单的例子,从上面的例子可以得出:使用createConnection(option)方法创建连接对象,然后使用连接对象的connect()方法创建连接,最后使用query()方法执行SQL语句,返回结果作为回调函数的参数rows返回,rows为数组类型。1.Connection创建连接对象,需要传入一些连接参数来连接数据库,即createConnection(option)中的option。该选项是一个对象,以键值对的形式传递到createConnection()方法中。上面的例子列出了最基本的参数:主机、主机名、用户、连接数据库的用户、密码、数据库名等参数。可以查看官方的DOCS,这里就不一一列举了。在初始阶段学习以上参数就足够了。2.要关闭连接,请使用end()方法。end()方法提供了一个回调函数,如下:connect.end(function(err){console.log('Endaconnection');});这是推荐的方法,end()方法将在关闭连接之前等待连接回调完成。官方还提供了另一种方法destroy()方法,直接关闭连接,不等待回调完成。一个简单的例子:varmysql=require('mysql');varoption=require('./connect.js').option;varconn=mysql.createConnection(option);conn.query('select*frommessage',function(err,rows,fields){if(!err){console.log(rows);}});conn.end(function(err){console.log('结束连接');});最后的结果会是:先打印SELECT数据表的结果,再打印endaconnection。而如果你用conn.destroy();替换close方法,那么你不想返回任何结果,因为在回调结束之前连接已经终止。3.连接池连接池的原理就是一开始给你创建多个连接对象放在一个“池”里,用的时候取一个,用完了再放回“池”,这在一定程度上有利于节省系统开销,因为连接对象是在一开始就创建的,使用时不需要系统开销去创建数据库连接对象。官方DOCS介绍连接方式:varmysql=require('mysql');varpool=mysql.createPool({connectionLimit:10,host:'example.org',user:'bob',password:'secret',database:'my_db'});pool.query('SELECT1+1ASsolution',function(err,rows,fields){if(err)throwerr;console.log('解决方案是:',rows[0].解决方案);});创建连接池的方法是createPool(option)。选项中多了一个参数connectionLimit,是指一次在连接池中创建多少个连接对象,默认为10。如果想共享一个连接对象,可以使用下面的方法连接;varmysql=require('mysql');varpool=mysql.createPool({host:'example.org',user:'bob',password:'secret',database:'my_db'});pool.getConnection(function(err,connection){//使用theconnectionconnection.query('SELECTsomethingFROMsometable',function(err,rows){//并完成了connection.connection.release();//这里不要使用连接,它已经返回到pool.});//使用连接connection.query('SELECTsomething2FROMsometable2',function(err,rows){//完成连接。connection.release();//不要使用连接在这里,它已经返回到池中。});});)功能。4、例1使用基本连接方式连接数据库,分别定义数据连接和关闭函数,如下例所示://connect.js数据库连接和关闭varmysql=require('mysql');varconfig=require('./config.json');//将数据库连接参数写入mysql对象,即config.mysqlvarconnCount=0;//统计当前未关闭的连接数exports.getConn=function(){connCount++;console.log('................................打开一个连接,有'+connCount+'连接。');returnmysql.createConnection(config.mysql);};exports.endConn=function(conn){conn.end(function(err){if(!err){connCount--;console.log('....................关闭一个连接,有'+connCount+'连接。');}});};然后举个使用数据库的例子//db.js查询用户信息varconnect=require('./connect.js');//导入数据连接方法exports.getUser=function(username,callback){varconnection=connect.getConn();varsql='select*fromuserwhereusername="'+username+'"';connection.query(sql,function(err,rows,fields){回调(err,rows,fields);});connect.endConn(连接);}5.例2使用了数据库连接池,同样先创建了一个数据库连接池,有以下两种方式://connect.js直接使用varmysql=require('mysql');varconfig=require('./config.json');varpool=mysql.createPool(config.mysql);exports.querySQL=function(sql,callback){pool.query(sql,function(err,rows,fields){callback(err,rows,fields);});}//connect.js使用getConnection方法varmysql=require('mysql');varconfig=require('./config.json');varpool=mysql.createPool(config.mysql);导出。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查询用户信息varconnect=require('./connect.js');出口。getUser=function(username,callback){varsql='select*fromuserwhereusername="'+username+'"';connect.querySQL(sql,function(err,rows,fields){回调(err,rows,fields);});};官方推荐使用连接池连接,但是直接使用pool.query()还是pool.getConnection()连接,官方并没有介绍其优缺点,我只是简单的做了一个测试,并且好像这两种方法区别不大,就没再研究了。有知道的麻烦告知一下,谢谢~