• 首页
  • nodejs
  • node.js 使用 mssql 开源库操作 sqlServer 数据库

node.js 使用 mssql 开源库操作 sqlServer 数据库

node.js 连接 ms SqlServer ,你没有看错,就是这样.

我们抛开一切操作系统的歧视, 当你需要用到的数据源存储在 SqlServer 中,那么就会遇到我们今天要说的情况.


一. mssql 下载安装

github地址: https://github.com/patriksimek/node-mssql


mssql 默认使用 Tedious 驱动.

Tedious by Mike D Pilsbury (pure javascript - windows/osx/linux) 默认支持(windows/osx/linux 等系统)


所以你在mac 下用node.js 连接 sqlserver 是没有任何问题的.

另外:Navicat Premium 可以支持连接 SqlServer (方便mac下开发的用户)


安装:

npm install mssql --save


使用:

var sql = require("mssql");


下面共享一个我自己实现的 mssql 连接基类

var config = require("config");
var sql = require("mssql");
var Q = require("q");
var util=require('util');


function _Base() {
}


_Base.prototype._connect = function (callback) {
    var defer = Q.defer();
    var connection = new sql.Connection({
        user: config.mssql.user,
        password: config.mssql.password,
        server: config.mssql.host,
        database: config.mssql.dbname
    });
    defer.resolve(connection);
    return defer.promise.nodeify(callback);
};


_Base.prototype._query = function (sqlstr) {
    if (!sqlstr) {
        var err = new Error("sql is empty!");
        var defer = Q.defer();
        return defer.reject(err);
    }

    //是否打印SQL语句
    if (config.debug) {
        console.log('[SQL:]', sqlstr, '[:SQL]');
    }

    return this._connect().then(function (connection) {
        return connection.connect().then(function () {
            var request = new sql.Request(connection);
            return request.query(sqlstr).then(function (recordset) {
                connection.close();
                return recordset;
            }).catch(function (err) {
                connection.close();
                return err;
            });
        });
    });
};


module.exports = _Base;


这个基类 _Base 里已经在原型链上新增了  _connect  和 _query 方法


对外使用的时候:

第一: 需要继承此基类

第二: 实例化对象后,直接在对象实例上调用 _query(sqlStr) 即可.


_Base 基类里的方法默认实现了 promise 规范.想了解 promise 规范的请点击连接



回到顶部