Node.js的mysql数据库操作

本文介绍了如何使用Node.js连接MySQL数据库,包括连接配置、基本的CRUD操作、处理连接丢失的方法以及如何防止SQL注入等问题。

连接MySQL数据库

[javascript]  view plain  copy
  1. var mysql = require('mysql');  
  2. var connection = mysql.createConnection({  
  3.     host : 'localhost',  
  4.     port : 3306,  
  5.     database : 'test',  
  6.     user : 'root',  
  7.     password : ''  
  8. });  
  9. connection.connect(function(err){  
  10.     if(err){  
  11.         cosnole.log('与mysql数据库建立连接失败');  
  12.     }else{  
  13.         console.log('与mysql数据库建立连接成功');  
  14.         //关闭连接  
  15.         connection.end(function(err){  
  16.             if(err){  
  17.                 console.log('关闭mysql数据库操作失败');  
  18.             }else{  
  19.                 console.log('关闭mysql数据库操作成功');  
  20.             }  
  21.         })  
  22.     }  
  23. })  
与数据库服务器之间的连接丢失时的处理

[javascript]  view plain  copy
  1. var mysql = require('mysql');  
  2. var connection = mysql.createConnection({  
  3.     host : 'localhost',  
  4.     port : 3306,  
  5.     database : 'test',  
  6.     user : 'root',  
  7.     password : ''  
  8. });  
  9. function connect(){  
  10.     connection.connect(function(err){  
  11.         if(err){  
  12.             console.log('与mysql数据库建立连接失败');  
  13.         }else{  
  14.             console.log('与mysql数据库建立连接成功');  
  15.         }  
  16.     })  
  17. }  
  18. //通过监听connection对象的error事件来处理与数据库服务器连接中断时的操作(断电、崩溃、重启等)  
  19. connection.on('error',function(err){  
  20.     if(err.code === 'PROTOCOL_CONNECTION_LOST'){  
  21.         console.log('与mysql数据库之间的连接丢失');  
  22.         //5秒后重新尝试连接数据库  
  23.         setTimeout(function(){  
  24.             connect();  
  25.         },5000);  
  26.     }else{  
  27.         throw err;  
  28.     }  
  29. })  
  30. connect();  
在mysql数据库中插入与查询数据
[javascript]  view plain  copy
  1. var mysql = require('mysql');  
  2. var connection = mysql.createConnection({  
  3.     host : 'localhost',  
  4.     port : 3306,  
  5.     database : 'test',  
  6.     user : 'root',  
  7.     password : ''  
  8. });  
  9. function connect(){  
  10.     connection.connect(function(err){  
  11.         if(err){  
  12.             console.log('与mysql数据库建立连接失败');  
  13.         }else{  
  14.             console.log('与mysql数据库建立连接成功');  
  15.             //使用connection对象的query方法统一执行数据的增删改查  
  16.             //使用三个参数,第一个为sql语句,第二个为数据(数组或者对象),第三个为执行后的回调函数(err为执行失败时触发的错误对象,result为执行结果)  
  17.             connection.query('insert into admin set ?',{username:'Jack',password:'456'},function(err,result){  
  18.                 if(err){  
  19.                     console.log('插入数据失败');  
  20.                 }else{  
  21.                     //在一个具有自增主键字段的数据表中插入一条数据后,可以使用result.insertId来获取该数据的主键值  
  22.                     console.log(result.insertId);  
  23.                     //在查询语句中,使用??占位符来为sql标识符使用参数  
  24.                     connection.query('select * from ??',['admin'],function(err,result){  
  25.                         if(err){  
  26.                             console.log('查询数据失败');  
  27.                         }else{  
  28.                             console.log(result);  
  29.                             connection.end();  
  30.                         }  
  31.                     })  
  32.                 }  
  33.             })  
  34.         }  
  35.     })  
  36. }  
  37. connect();  
mysql增删改查操作

[javascript]  view plain  copy
  1. var mysql = require('mysql');  
  2. var table = 'admin';    //表名  
  3. var connection = mysql.createConnection({  
  4.     host : 'localhost',  
  5.     port : 3306,  
  6.     database : 'test',  
  7.     user : 'root',  
  8.     password : '',  
  9.     multipleStatements : true   //默认是禁止多语句操作,把该属性设置为true,即可执行多条语句  
  10. });  
  11. connection.connect(function(err){  
  12.     if(err){  
  13.         console.log('与mysql数据库建立连接失败');  
  14.     }else{  
  15.         console.log('与mysql数据库建立连接成功');  
  16.         //插入数据  
  17.         insertData();  
  18.     }  
  19. });  
  20. function insertData(){  
  21.     var sqlStr = "";  
  22.     //插入多条sql语句  
  23.     //为了防止sql注入攻击,使用connection对象的escape方法对用户输入的数据进行escape编码处理  
  24.     //有些情况下,可能由用户决定使用某个sql标识符(数据库名、数据表名、字段名等),这时候,使用escapeId方法编码处理该标识符  
  25.     for(var i=0;i<3;i++){  
  26.         sqlStr += 'insert into ' + table + '(username,password) values(' + connection.escape('用户名' + i.toString()) + ',' + connection.escape('密码' + i.toString()) + ');';  
  27.     }  
  28.     connection.query(sqlStr,function(err,result){  
  29.         if(err){  
  30.             console.log('插入数据失败');  
  31.         }else{  
  32.             console.log('插入数据成功');  
  33.             //更新数据  
  34.             updateData();  
  35.         }  
  36.     })  
  37. }  
  38. function updateData(){  
  39.     connection.query('update ' + table + ' set password = ? where username = ?',['新的密码','用户名1'],function(err,result){  
  40.         if(err){  
  41.             console.log('更新数据失败');  
  42.         }else{  
  43.             console.log('更新数据成功');  
  44.             //删除数据  
  45.             deleteData();  
  46.         }  
  47.     })  
  48. }  
  49. function deleteData(){  
  50.     connection.query('delete from ' + table + ' where username = ?',['用户名2'],function(err,result){  
  51.         if(err){  
  52.             console.log('删除数据失败');  
  53.         }else{  
  54.             console.log('删除数据成功');  
  55.             //查询数据  
  56.             queryData();  
  57.         }  
  58.     })  
  59. }  
  60. function queryData(){  
  61.     connection.query('select * from ' + table,function(err,result){  
  62.         if(err){  
  63.             console.log('查询数据失败');  
  64.         }else{  
  65.             console.log('查询数据成功');  
  66.             console.log(result);  
  67.             //断开连接  
  68.             connection.end();  
  69.         }  
  70.     })  
  71. }  
Node.js mysql连接参数

https://cnodejs.org/topic/53f834248f44dfa351525511

参考地址:

Node.js的mysql数据库操作 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值