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 
//便可打印出查询信息

 

 

 

 
 
 
 
 
 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11745.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论