在node.js采用npm的方式来进行模块的安装。node.js安装的话有两种方式能够经过-g的方式进行全局的安装,在这种模式下安装的模块能够被整个node.js的程序所引用。若是不加-g的话nodejs会在当前的目录下新建一个node_modules文件夹,而且将下载的模块放置在该文件夹下相应的目录.javascript
npm install mysql -g //全局安装 npm install mysql --save //下载至当前的目录下java
为了方便我将mysql的root密码设置为123456,在node数据库当中新建了一张名为users的表,建表的语句与如所示。node
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `users` -- ---------------------------- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `name` varchar(255) DEFAULT NULL, `id` int(11) NOT NULL AUTO_INCREMENT, `password` varchar(256) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of `users` -- ---------------------------- BEGIN; INSERT INTO `users` VALUES ('zs', '1', '123456'), ('ls', '2', '12345'); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
var mysql=require('mysql'); var connection=mysql.createConnection( { host:'localhost', user:'root', password:'123456', database:'node' } ); connection.connect(); var queryString='SELECT * FROM users'; connection.query(queryString,function(err,rows,fields){ if(err) throw err; for(var i in rows){ console.log('user name',rows[i].name); } });
一样的咱们在建立createConnection链接时可使用字符串来替代对象的方式mysql
var connection=mysql.createConnection('mysql://user:pass@host/node');
经过遍历查询的结果咱们能够查询到每一个字段(在上面的用例当中咱们显示的是name)sql
console.log('user name',rows[i].name);数据库
query用于mysql的查询,在这里面咱们使用了匿名函数的方式进行操做,一旦触及到查询的操做时会自动回调到该匿名事件当中,其中err,fields和rows分别用于显示相应的状态。npm
对于 上面的操做是将查询全部的行以后再进行回调,假若咱们须要对其中的每一行进行处理的话,咱们能够采用下面的方式进行。函数
var mysql=require('mysql'); var connection=mysql.createConnection( { host:'localhost', user:'root', password:'a63621375', database:'node' } ); connection.connect(); var queryString='SELECT * FROM users'; var query=connection.query('select * from users'); query.on('error',function(err){ throw err; }); query.on('fields',function(fields){ console.log(fields); }); query.on('result',function(row){ console.log(row.name); });
有的时候咱们须要对某一行进行处理时,为了避免影响其余的数据,咱们不得不对查询进行暂停进行相应的处理以后再进行恢复。ui
query.on('result', function(row) { connection.pause(); // 指定处理的代码 console.log(row); connection.resume(); });
有的时候咱们须要采用指定查询的条件来过滤不须要的数据,同时咱们要避免出现sql注入,在node-mysql当中有两种方式进行条件查询,第一种采用?来显示code
connection.connect(); var key = 'zs'; var queryString = 'SELECT * FROM users WHERE names = ?'; connection.query(queryString, [key], function(err, rows, fields) { if (err) throw err; for (var i in rows) { console.log(rows[i]); } }); connection.end();
另外一种方式是采用conection.escape()的方式
connection.connect(); var key = 'zs'; var queryString = 'SELECT * FROM users WHERE name = ' + connection.escape(key); connection.query(queryString, function(err, rows, fields) { if (err) throw err; for (var i in rows) { console.log(rows[i]); } });
var user={name:"ll",password:"1234adsf"}; var query=connection.query('insert into users set ?',user,function(err,result){ }); console.log(query.sql);
insert into users set
name
= 'll',password
= '1234adsf' //输出的query.sql语句
在操做完成以后咱们须要对mysql进行关闭,同时咱们必需要对一些非正常关闭进行相应的处理。
//无论是正常或者非正常的关闭都会触发close这个回调事件, //咱们能够在触发close操做以后检查关闭的缘由从而进行相应的处理 connection.on('close', function(err) { if (err) { //假若出现非正常关闭咱们从新进行链接 connection = mysql.createConnection(connection.config); } else { console.log('正常关闭.'); } });