node.js与数据库
与MySQL的API:
运行出现异常时,不会立即中断Node.js的代码运行,而是会抛出异常;注意对异常进行合适的处理
npm install mysql 下载后引入:var mysql = require('mysql');
var Connection = mysql.createConnection({参数})
>创建MySQL连接,返回Connection对象
其中createConnection()函数接收一个json对象参数,如:
{ host:'loaclhost',
posr:'8080',
user:'user',
password:'pass' }
Connection.connect(function(err){})
>利用回调函数的err参数判断创建MySQL是否成功
Connection.query(sql,function(err,rows) )
>异步执行sql语句,通过回调函数传递执行结果err或rows
Connection.query(sql,paramInfo,function(err,rows) )
>将sql中的参数作为对象通过paramInfo(sql中对应的变量)传递
Connection.end(function(err) )
>关闭数据库连接(可以获取关闭失败后的返回结果)
Connection.destory();
>强制性关闭连接
Connection.escape(str)
>str为需要转义的字符串,返回转义后的字符串(防止sql注入)
http://www.cnblogs.com/always-online/archive/2013/12/23/3487852.html
1 //创建数据库 2 client.query('create database '+dbName, function(err) { 3 if (err) { 4 console.log("Error:"+err.message) 5 } 6 }); 7 8 9 //使用该数据库 10 client.query('USE '+dbName); 11 12 13 //创建表 14 client.query( 15 'CREATE TABLE '+tableName+ 16 '(id INT(11) AUTO_INCREMENT, '+ 17 'username VARCHAR(255), '+ 18 'password VARCHAR(255), '+ 19 'created DATETIME, '+ 20 'PRIMARY KEY (id))' 21 ); 22 23 //添加数据 24 var query = client.query('INSERT INTO '+tableName+' SET username = ?, password = ?, created = ?', 25 ['zhangsan', '1234', '2010-08-16 12:42:15'],function(err, results){ 26 console.log(results.insertId);//返回记录id 27 } 28 ); 29 30 31 //查询数据 32 var query = client.query('select * from '+tableName+' where id = ?', [2],function(err, results){ //查询id为2的数据 33 console.log(results[0].id);//返回记录id 34 console.log(results[0].username);//返回记录id 35 console.log(results[0].password);//返回记录id 36 console.log(results[0].created);//返回记录id 37 } 38 ); 39 40 41 //修改数据 42 client.query("update "+tableName+" set password = ? where id = ?", [ "123456", 1 ], function(err, results) {//修改id为1的记录的password 43 console.log(results); 44 /** result 为格式如下的信息 45 { fieldCount: 0, 46 affectedRows: 1, 47 insertId: 0, 48 serverStatus: 2, 49 warningCount: 0, 50 message: '(Rows matched: 1 Changed: 1 Warnings: 0', 51 protocol41: true, 52 changedRows: 1 53 } 54 */ 55 }); 56 57 //删除数据 58 client.query("delete from "+tableName+" where id = ?", [ 1 ], function(err, results) {//删除id为1的记录 59 console.log(results); 60 /** result 为格式如下的信息 61 { 62 fieldCount: 0, 63 affectedRows: 1, 64 insertId: 0, 65 serverStatus: 2, 66 warningCount: 0, 67 message: '', 68 protocol41: true, 69 changedRows: 0 70 } 71 */ 72 }); 73 74 client.end();//关闭连接
拼凑sql语句的几种方式:
query( 'insert into table SET ?',{id:0}, function(){}
query( 'insert into table SET id = :id',{id:0}, function(){}
var id = 0 ; query( 'insert into table SET id=' +id, function(){}
同时执行多个sql语句:
query( 'sql1;sql2', function(err,rows){ rows[0]; rows[1]; //返回的结果是一个数组,分别对应所执行的sql语句的结果
与MongoDB:
安装驱动模块:npm install node-mongodb-native
1 引入: var MongoDB = require('mongodb'); 2 3 var server = new MongoDB.Server('ip',port,{可选配置参数}; //创建数据库连接服务器{auto_reconnect:true}自动重连 4 5 var db = new MongoDB.Db('DB_name',server,{safe:true}) 6 db.open(function(err,db){ 7 if(!err) 8 console.log('connect success!') 9 db.collection('数据集合名',{safe:true},function(err,collection){ //连接数据集合,可换成db.createCollection() 10 if(!err) 11 console.log(“连接数据集合成功”)
collection.insert({id:'wyr',age:'21'},{safe:true},function(err,result){..result为插入集合后的结果.}) //插入数据
colection.remove({id:'wyr'},{safe:true},function(err,result){...)) //remove方法无删除条件时删除整个数据集合
collection.update({name:'wyr'},{$push:{sex:'man'}},function(err,cols){... //更新数据
collection.update({name:'wyr'},{$set:{sex:'f'}},function(err,cols){...
collection.find().toArray(function(err,cols){ //查询数据集合方式一
if(!err)
res.write(JSON.stringify(cols))
console.log(cols) //文档对象数组
collection.find({id:'wyr'}).toArray(function(err,cols){ //查询数据集合方式2
if(!err)
res.write(JSON.stringify(cols))
console.log(cols) //文档对象数组
collection.findOne({name:'wyr',(function(err,col){ //查询数据集合方式3
if(!err)
res.write(JSON.stringify(col))
console.log(col) //一条文档对象
12 13 14 }

浙公网安备 33010602011771号