MSSQL 是Nodejs用于连接Microsoft SQL Server 的插件。

安装方法

npm install mssql

配置Config

const config = {
user: '...',
password: '...',
server: 'localhost',
database: '...',
options: {
encrypt: true //使用windows azure,需要设置次配置。
}
}
user:SQL Server 的登录名
password: SQL Server的登录密码
server:SQL Server的地址
port:端口号,默认为1433
domain:设置domain后,可通过domain连接数据库
database:数据库名称
connectionTimeout:连接timeout,单位ms 默认 15000
requestTimeout:请求timeout,单位ms默认15000
parseJSON:将json数据集转化成json obj
pool.max:连接池最大连接数,默认10
pool.min:连接池最小连接数,默认0
pool.idleTimeoutMillis:设置关闭未使用连接的时间,单位ms默认30000

快速开始
const sql = require('mssql') //声明插件
sql.connect(config).then(() => {
return sql.query`select * from mytable where id = ${value}`
}).then(result => {
//请求成功
}).catch(err => {
//err 处理
})
sql.on('error', err => {
//error 处理
})
Streaming流
如果表格查询的数据量过大,使用Streaming流可以很好地将数据展示出来。
const sql = require('mssql')
sql.connect(config, err => {
const request = new sql.Request()
request.stream = true //开启streaming
request.query('select * from verylargetable') //或者执行request.execute(procedure)
request.on('recordset', columns => {
//每次查询会触发一次 recordset事件,返回结果集
})
request.on('row', row => {
//每个结果集会出发row事件,返回row信息
})
request.on('error', err => {
//监听error事件,可能被触发多次
})
request.on('done', result => {
//最后触发
})
})
sql.on('error', err => {
//error 处理
})

POOL连接池
数据库连接是非常占用资源的,尤其是在高并发的情况下,如果每次都去建立数据库连接就会有性能问题,也会影响一个应用程序的延展性,
针对这个问题,连接池出现了,连接池就是为了解决这个问题的。
new sql.ConnectionPool(config).connect().then(pool => {
return pool.query`select * from mytable where id = ${value}`
}).then(result => {
console.dir(result)
}).catch(err => {
})

pool.close()非常重要,只创建,不关闭会造成非常严重的内存泄漏。

创建请求及取消请求
//创建请求:
const request = new sql.Request(/* [pool 或 transaction] */) //取消请求:
const request = new sql.Request()
request.query('waitfor delay \'00:00:05\'; select 1 as number', (err, result) => {
})
request.cancel() //取消之前所有的query动作

Bulk创建Table

const table = new sql.Table('table_name')
table.create = true
table.columns.add('a', sql.Int, {nullable: true, primary: true})
table.columns.add('b', sql.VarChar(50), {nullable: false})
table.rows.add(777, 'test')//添加一行信息
const request = new sql.Request()
request.bulk(table, (err, result) => {
})

Execute

执行进程

const request = new sql.Request()
request.input('input_parameter', sql.Int, value)
request.output('output_parameter', sql.Int)
request.execute('procedure_name', (err, result) => {
})

Input(name,type,value)给request添加一个因数

Output(name,type,(value)) 将request返回值,放入name中

Transaction

保证全部的query request在一个连接中完成。Begin创建连接,commit(完成)或者rollback(回滚)释放连接。

const transaction = new sql.Transaction(/* [pool] */)
transaction.begin(err => {
const request = new sql.Request(transaction)
request.query('insert into mytable (mycolumn) values (12345)', (err, result) => {
transaction.commit(err => {
console.log("Transaction committed.")
})
})
})

Prepared Statement

与transaction很像,但是此处确保全部的procedure在一个连接中执行。Prepare创建连接,unpare释放连接。

const ps = new sql.PreparedStatement(/* [pool] */)
ps.input('param', sql.Int)
ps.prepare('select @param as value', err => {
ps.execute({param: 12345}, (err, result) => {
ps.unprepare(err => {
})
})
})

CLI

2.0版本后,mssql便支持CLI功能

安装方法:npm install mssql -g ,需要安装至全局

编辑config文件,命名为.mssql.json

执行

echo "select * from mytable" | mssql /path/to/config
//便可打印出查询信息

 

 
 
 
 
 
 

Nodejs MSSQL详细解读的更多相关文章

  1. Nodejs OracleDB详细解读

    //导入oracledb模块 //基于版本@3.0.1 安装指令npm install oracledb //node访问oracleDB需要搭建访问环境,否则无法正常访问 //创建Oracle对象 ...

  2. MemCache超详细解读

    MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...

  3. MemCache超详细解读 图

    http://www.cnblogs.com/xrq730/p/4948707.html   MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于 ...

  4. rpm软件包管理的详细解读

    CentOS系统上使用rpm命令管理程序包:安装.卸载.升级.查询.校验.数据库维护 1.基本安装 rpm -ivh PackageFile 2.rpm选项 rpm -ivh --test Packa ...

  5. MemCache详细解读

    MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...

  6. Android BLE蓝牙详细解读

    代码地址如下:http://www.demodashi.com/demo/15062.html 随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环.心率检测仪.以及各式各样的智能家 ...

  7. 为你详细解读HTTP请求头的具体含意

    当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看 ...

  8. 详细解读Volley(三)—— ImageLoader & NetworkImageView

    ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码中没有提供磁盘缓存的设置,所以咱们还需要去源码中进行修改,让我们可以更加自如的设定是否进行磁盘 ...

  9. 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块

    详细解读Python的web.py框架下的application.py模块   这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...

随机推荐

  1. 01快速入门-04-Map、Set和iterable(ES6)

    1.Map 我们知道,在JS中其实对象的方式就跟Java中的Map极为相似,即键值对的方式.JS中,key必须是字符串,实际上Number等值作为key也是合理的,所以为了解决这个问题,在最新的ES6 ...

  2. Java-byte[]与16进制字符串互转

    转自: http://www.cnblogs.com/freeliver54/archive/2012/07/30/2615149.html Java中byte用二进制表示占用8位,而我们知道16进制 ...

  3. mongodb 在windows下面进行分片

    在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存就吃不消了,针对这样的场景我们该如何应对. 一:分片 mongo ...

  4. IBAction&IBOutlet

    IB:Interface Builder 1>IBAction 需要操作,例如按钮的点击 2> IBOutlet 需要获得.修改该属性 然后就可以与Storyboard建立起联系

  5. ACM学习之路___HDU 5723(kruskal + dfs)

    Abandoned country Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s) ...

  6. GCD之死锁体会

    1.先看下几句代码 1 2 3 4 5 6 7 dispatch_queue_t serialqueue=dispatch_queue_create("serialqueue", ...

  7. Redis——windows环境安装redis和redis sentinel部署

    一:Redis的下载和安装 1:下载Redis Redis的官方网站Download页面,Redis提示说:Redis的正式版不支持Windows,要Windows学习Redis,请点击Learn m ...

  8. Theano学习-scan循环

    \(1.Scan\) 通用的一般形式,可用于循环 减少和映射(对维数循环)是特殊的 \(scan\) 对输入序列进行 \(scan\) 操作,每一步都能得到一个输出 \(scan\) 能看到定义函数的 ...

  9. python---time模块使用详解

    python中的time模块提供一些方法用来进行关于时间的操作,time模块中有以下方法可供使用: time() --- 返回当前时间的时间戳. 调用:time.time(),  可用于计算程序运行的 ...

  10. python netifaces模块

    简介 在Linux系统中,我们可以通过ifconfig,route等shell命令来查看系统接口配置,网关和路由等信息.通过shell的正则表达式功能,通过系列复杂操作,我们可以从字符串中提取出相关的 ...