跳到主要内容

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

· 阅读需 2 分钟
一介布衣
全栈开发者 / 技术写作者

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 规范的请点击连接