在安装好MySql的基础下,我们需要在Node.js连接MySql使用的是mysql模块。使用MySQL模块前需要使用NPM来安装:
npm install mysql
mysql模块通过createConnection()方法创建MySQL连接,下面的代码即和本地的MySQL数据库建立连接。
const mysql=require('mysql'); const connection=mysql.createConnection({ host:'localhost', user:'root', password:'root' }); connection.connect(function(err){ if(err){ console.error('error connection:'+err.stack); return; } console.log('connect as id'+connection.threadId); });
在上述代码中:CreatConnection()方法创建连接,connection.connect()方法判断连接是否成功。CreatConnection()方法接受一个json对象参数。json对象主要使用的字段有:
- host:需要连接数据库地址,默认为localhost。
- port:连接地址默认的端口,默认为3306.
- user:连接MySQL时使用的用户名
- password:用户名对应的密码
- database:所需要连接的数据库名称
通过end()方法可以正常地终止一个连接:
connection.end(function(err){
console.log(err);
})
当然使用destory()方法也可以终止连接,该方法会立即终止底层套接字,不会触发更多的事件和回调函数。
connection.destory()
Node.js操作MySQL
当连接MySQL成功后,就需要通过Node.js来操作数据库了。MySQL模块提供了一个名为query()的方法,可以用来执行SQL语句,从而对MySQL数据库进行相应的操作。
假设我们连接的数据库ssh_forum中的answer数据表,
可以使用以下代码将这个data数据表记录查询出来
const mysql=require('mysql'); const connection=mysql.createConnection({ host:'localhost', user:'root', password:'root' }); //连接MySQL connection.connect(function(err){ //连接出错的处理 if(err){ console.error('error connection:'+err.stack); return; } console.log('connect as id'+connection.threadId); }); //查询数据 connection.query('select * from ssh_forum.answer',function(err,rows){ if(err){ console.log(err); }else{ console.log(rows); } });
最终显示的结果:
上述图片将所有的记录查询出来并打印出来了
上述代码中connection.query()方法的第一个参数是一条SQL语句,第二个参数是一个回调函数,回调函数中的第一个参数是err,第二个参数是执行SQL语句后返回的记录。
connection.query()方法还有一个paramInfo参数可选,当SQL语句中含有一些变量的时候,可以将“?”作为占位符放置在SQL语句中,通过paramInfo参数传递给SQL语句。
const table="mytable"; //查询数据 connection.query('select * from ?',[table],function(err,rows){ if(err){ console.log(err); }else{ console.log(rows); } });
mysql模块提供了一个escape()方法,用来防止SQL注入攻击。SQL注入攻击的本质是黑客在提交给服务器的数据中带有SQL语句,试图欺骗服务器,让服务器运行自己的恶意SQL语句,因此在使用escape方法处理用户提交的数据可以防止SQL注入攻击。