Nodejs MSSQL详细解读
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详细解读的更多相关文章
- Nodejs OracleDB详细解读
//导入oracledb模块 //基于版本@3.0.1 安装指令npm install oracledb //node访问oracleDB需要搭建访问环境,否则无法正常访问 //创建Oracle对象 ...
- MemCache超详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- MemCache超详细解读 图
http://www.cnblogs.com/xrq730/p/4948707.html MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于 ...
- rpm软件包管理的详细解读
CentOS系统上使用rpm命令管理程序包:安装.卸载.升级.查询.校验.数据库维护 1.基本安装 rpm -ivh PackageFile 2.rpm选项 rpm -ivh --test Packa ...
- MemCache详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- Android BLE蓝牙详细解读
代码地址如下:http://www.demodashi.com/demo/15062.html 随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环.心率检测仪.以及各式各样的智能家 ...
- 为你详细解读HTTP请求头的具体含意
当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看 ...
- 详细解读Volley(三)—— ImageLoader & NetworkImageView
ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码中没有提供磁盘缓存的设置,所以咱们还需要去源码中进行修改,让我们可以更加自如的设定是否进行磁盘 ...
- 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块
详细解读Python的web.py框架下的application.py模块 这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...
随机推荐
- temp-成都农商行路径
route add 30.3.4.0 mask 255.255.255.0 30.3.12.254 route add 30.3.12.0 mask 255.255.255.0 30.3.12.254 ...
- ASP.NET Core 运行原理剖析
1. ASP.NET Core 运行原理剖析 1.1. 概述 1.2. 文件配置 1.2.1. Starup文件配置 Configure ConfigureServices 1.2.2. appset ...
- composer设置忽略版本匹配
composer install 时遇到错误: Your requirements could not be resolved to an installable set of packages. 原 ...
- String类的一些常见的获取方法(5)
String s = "aasfasfdtgsrast"; 1: int a = s.length() //返回字符串的长度 2: char s1 = charAt(int in ...
- 插入排序-python实现
def insert_sort(arr): for j in range(1,len(arr)): #从list第二个元素开始 key=arr[j] ...
- BZOJ-1012-[JSOI2008]最大数maxnumber(线段树)
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...
- AngularJS -- HTML 编译器
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ HTML Compiler Overview(HTML 编译器 概要) AngularJ ...
- Cornfields poj2019 二维RMQ
Cornfields Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u Submit S ...
- Android开发更新UI的几种方式
1.runOnUiThread 2.handler post 3.handler sendmessage 4.view post xml布局文件: <RelativeLayout xmlns:a ...
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...