可將 SELECT
Statement 直接傳入 Node-mssql,並且支援 Template String 實現 Parameter 避免湊字串而造成 SQL Injection。
Version
Node 14.18.1
Node-mssql 7.2.1
MSSQL 2017
Add Library
$ yarn add mssql
mssql
:安裝 node-mssql
連接 MSSQL。
SELECT
import sql from 'mssql'
await sql.connect ({
server: 'mssql-2017',
port: 1433,
user: 'sa',
password: '111111',
database: 'KnexLab',
options: {
trustServerCertificate: true
}
})
let id = 2
let { recordsets } = await sql.query (`
SELECT *
FROM articles
WHERE id = ${id}
`)
console.log (recordsets)
第 3 行
await sql.connect ({
server: 'mssql-2017',
port: 1433,
user: 'sa',
password: '111111',
database: 'KnexLab',
options: {
trustServerCertificate: true
}
})
使用 Node-mssql 連接 MSSQL:
server
:設定 server 名稱,不能使用 IPport
:設定 portuser
:設定 idpassword
:設定 passworddatabase
:設定連接 databasetrustServerCertificate
:本機開發設定為true
sql.connect
回傳 Promise,因此要加上 top level await
14 行
let id = 2
let { recordsets } = await sql.query (`
SELECT *
FROM articles
WHERE id = ${id}
`)
console.log (recordsets)
- 將
SELECT
傳入sql.query
SELECT
直接以 Template String 達成 parametersql.query
回傳為 Promise,使用 top level await 處理- 使用 Object Destructure 抽出
recordsets
才是實際回傳 Array
Conclusion
sql.query
支援 Promise,因此可使用 Promise Chain 或 Async Await 處理皆可sql.connect
也是回傳 Promise