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. 06jQuery-04-DOM操作

    jQuery既然是为了帮助你能从js的繁琐中解脱出来,自然在DOM操作上也有自己的一套. 1.修改Text和HTML 之前我们提到过,如果用JS的话,你要修改Text或者HTML需要用到其innerH ...

  2. [err] 1055

    本人mysql安装在ubuntu16.04上,mysql版本是5.7.19:在创建表和插入数据时报了 [Err] 1055 - Expression #1 of ORDER BY clause is ...

  3. 第4章 同步控制 Synchronization ----同步机制的摘要

    同步机制摘要Critical Section Critical section(临界区)用来实现"排他性占有".适用范围是单一进程的各线程之间.它是:  一个局部性对象,不是一个核 ...

  4. 实例讲解webpack的基本使用第四篇

    这一篇来讲解一下webpack的loader的使用,用webpack打包文件,css,img,icon等都需要下载安装对应的loader文件,并且写好配置项,才可以进行打包,废话不多说,直接开始实战. ...

  5. Linux入门之常用命令(4)vi编辑器

    vi分为三种模式 一般模式:删除字符.删除整行.复制粘贴等操作 编辑模式:i o a r进入 输入字符  Esc退出 命令行模式::或/ 将光标移动到最末行 搜寻数据 读取或替换 退出vi 显示行号 ...

  6. JS脚本检查密码强度

    <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con ...

  7. ubuntu中运行python脚本

    1. 运行方式一 新建test.py文件: touch test.py 然后vim test.py打开并编辑: print 'Hello World' 打开终端,输入命令: python test.p ...

  8. C#中 计时器用法

    有时候我们会需要计算某段代码运行的时间比如一个sql查询,记录一段代码所花费的时间等等代码如下: System.Diagnostics.Stopwatch watch = new System.Dia ...

  9. tomcat 内存大小配置

    Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序.这个初始内存和最大内存在一定程度都会 ...

  10. app启动页问题

    今天自己做的小作品准备提交,就差一个启动页,各种百度,各种搜,结果还好最后终于出来了,和大家分享一下,这个过程中遇到的各种小问题.(注XCode版本为7.2) 1.启动页一般都是图片,因为苹果有4,4 ...