使用node连接mySQL,封装自定义模块供外部调用

当我们使用node.js写网站的时候,难免会有一些操作让我们连接数据库,并对数据库经行操作,但是每次都需要对数据库进行连接与断开连接,所以,我写下这篇文章,将连接数据库的操作封装到一个模块中,然后简化外部调用的代码。废话不多说,直接看node.js怎么连接mysql:

1、使用npm安装MySQL模块:

$ npm install mysql -S

2、在你需要对数据库进行操作的地方引入模块mysql:

var mysql = require(‘mysql’);

3、建立连接,并且定义query语句(可以对数据库进行操作):
这里就你要多说几句了,我们通过mysql下的createConnection方法可以为连接配置参数,如下代码:

var connection = mysql.createConnection({
        host : 'localhost',
    port : 3306,
    database : 'myweb',
    user : 'myroot',
    password : 'myroot'
});      

当参数配置完成后,我们就可以通过配置好的connection对象进行数据库的连接,

connection.connect(function(err){});

当连接数据库成功之后,我们就可以对数据库进行操作了,即connection下边的query方法(这里注意,操作语句需要在创建好连接的回调函数中)

connection.query(sql,[params],callback);

它接受三个参数,第一个是SQL语句,但是要注意,当传变量的时候要用‘?’代替,不要使用字符串拼接;第二个参数就是按照参数一中‘?’的顺序将变量排列的数组;第三个参数就是回调函数,返回进行数据操作后的数据或者影响;(也可以传两个参数,SQL语句和回调函数,但是这种方法不安全,同时会让SQL语句过于复杂,所以我们一般不推荐使用)

4关闭连接:
同样是connection下边的方法,有两种关闭方式,第一种是connection.end(function(err){}); 可以接受关闭连接后的回调函数;第二种是connection.destroy(); 此方法与第一种的区别就是没有回调,直接销毁连接;

5、 基本方法学到了之后,我们就可以自己封装一个模块,供外部调用方便了;
A,首先,我们需要在创建一个mysql连接的配置模块database.config.js(方便后期修改),和一个进行操作的模块db.js(用于进行数据库的链接和数据的操作);代码部分分别如下:

//a)database.config.js代码:
//配置链接数据库参数
module.exports = {
    host : 'localhost',
    port : 3306,
    database : 'myweb',
    user : 'myroot',
    password : 'myroot'
};
//b)db.js代码:
//定义数据库query函数,向外暴露
var mysql = require('mysql');
var databaseConfig = require('./database.config');  //引入数据库配置模块中的数据

//向外暴露方法
module.exports = {
    query : function(sql,params,callback){
        //每次使用的时候需要创建链接,数据操作完成之后要关闭连接
        var connection = mysql.createConnection(databaseConfig);        
        connection.connect(function(err){
            if(err){
                console.log('数据库链接失败');
                throw err;
            }
         //开始数据操作
        connection.query( sql, params, function(err,results,fields ){
           if(err){
                console.log('数据操作失败');
                throw err;
            }
            //将查询出来的数据返回给回调函数,这个时候就没有必要使用错误前置的思想了,因为我们在这个文件中已经对错误进行了处理,如果数据检索报错,直接就会阻塞到这个文件中
            callback && callback(results, fields);
            //results作为数据操作后的结果,fields作为数据库连接的一些字段,大家可以打印到控制台观察一下
                //停止链接数据库,必须再查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
             connection.end(function(err){
                  if(err){
                      console.log('关闭数据库连接失败!');
                      throw err;
                  }
              });
           });
       });
    }
};

B、封装好了自定义模块之后,我们就可以在需要的地方轻松调用了,这个时候,你就会感觉到刚才做的工作是真的管用,以下是调用实例:

var db = require('./../model/db');  //引入刚才自定义的模块
        //对数据库操作(从show_cascade 表中检索所有字段,并打印出结果)
db.query('select * from show_cascade', [],function(results,fields){
       console.log(results);
       console.log(fields);
 });

数据库操作结果

怎么样,有了这个方法,在也不用愁node.js连接数据库的繁琐操作了!这是本人写的第二篇博客,希望大家还能给一些好的意见,如果有错误也请及时跟我联系,谢谢!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值