mssql-i
v5.1.9
Published
sqlserver interface, base on mssql
Downloads
138
Maintainers
Readme
mssql-i
源代码及文档
安装
npm install mssql-i
介绍
mssql-i的主要特点:
- 1.提供简单的插入,修改,删除,替换,查询,分页查询等功能
- 2.事务封装
- 3.基于Promise的写法
方法总览
Insert 插入
insert 插入一条数据
Update 更新
update 根据主键更新一条数据
updateByWhere 根据条件更新一条或多条数据
Delete 删除
delete 根据主键删除一条数据
deleteByWhere 根据条件删除一条或多条数据
Replace 替换
replace 根据主键替换一条数据(如果存在则更新,如果不存在则插入)
Save 保存数据
save 保存一条数据
saves 保存多条数据,并发执行
savesSeq 保存多条数据,顺序执行
savesSeqWithTran 保存多条数据,顺序执行(事务)
Exec 执行SQL
exec 执行一条SQL语句
execs 执行多条SQL语句(并发)
execsSeq 执行多条SQL语句(顺序)
Procedure 存储过程
exec 执行一个存储过程
Select 查询
select 查询一个SQL语句
selects 查询多个SQL语句
selectTop1 查询一个SQL语句,取返回的第一行数据
selectOneValue 查询一个SQL语句,取返回的第一行的第一个字段值
selectCount 查询一个SQL语句,取返回的行数。相当于select count(*) from (sql)
selectSplitPage 分页查询,返回总行数与指定页的数据集
selectGUID 获取一个GUID
Transaction 事务
begin 开启一个事务
commit 提交一个事务
rollback 回滚一个事务
ConnectionHelper 连接
create 创建一个连接
close 关闭一个连接
例子
例子1 创建一张表tbl_test
const mssqli = require("mssql-i");
const { ConnectionHelper, Exec } = mssqli;
async function run() {
let conn;
try {
// 第一步:创建连接
conn = await ConnectionHelper.create({
server: "localhost",
user: "",
password: "",
database: "",
port: 1433
});
// 第二步:执行创建表的SQL
await Exec.exec(
conn,
`create table tbl_test (
id int primary key,
value varchar(255)
)`
);
} catch (err) {
throw err;
} finally {
// 第三步:关闭连接
await ConnectionHelper.close(conn); // conn 可以为空,空时不报错
}
}
run()
.then(() => {
console.log("完成");
})
.catch(err => {
console.log(err);
});
例子2 插入一条数据
const mssqli = require("mssql-i");
const { Save, SaveType } = mssqli;
...
await Save.save(conn, {
data: { id: 1, value: "1" }, // 插入的数据{ id: 1, value: "1" }
table: "tbl_test", // 表名
saveType: SaveType.insert //插入
});
...
此操作相当于执行SQL: insert into tbl_test(id, value) values(1, '1');
例子3 根据主键更新一条数据
...
await Save.save(conn, {
data: { id: 1, value: "2" }, // 更新的数据{ id: 1, value: "2" }
table: "tbl_test", // 表名
saveType: SaveType.update //更新
});
...
此操作相当于执行SQL: update tbl_test set value='2' where id = 1;
例子4 删除一条数据
...
await Save.save(conn, {
data: { id: 1 }, // 删除的数据{ id: 1 }
table: "tbl_test", // 表名
saveType: SaveType.delete //删除
});
...
此操作相当于执行SQL: delete from tbl_test where id = 1;
例子5 替换一条数据
...
await Save.save(conn, {
data: { id: 1, value: "3" }, // 替换的数据{ id: 1, value: "3" }
table: "tbl_test", // 表名
saveType: SaveType.replace //替换
});
...
此操作相当于执行SQL: replace into tbl_test(id, value) values(1, '2');
例子6 多条数据并发操作(注意:先后顺序不一定)
...
await Save.saves(conn, [
{
data: { id: 1, value: "11" },
table: "tbl_test",
saveType: SaveType.insert //插入
},
{
data: { id: 1, value: "22" },
table: "tbl_test",
saveType: SaveType.update //更新
},
{
data: { id: 3, value: "33" },
table: "tbl_test",
saveType: SaveType.replace //替换
},
{
data: { id: 3 },
table: "tbl_test",
saveType: SaveType.delete //删除
}
]);
...
例子7 多条数据顺序操作(注意,按照顺序执行)
...
await Save.savesSeq(conn, [
{
data: { id: 1, value: "11" },
table: "tbl_test",
saveType: SaveType.insert //插入
},
{
data: { id: 1, value: "22" },
table: "tbl_test",
saveType: SaveType.update //更新
},
{
data: { id: 2, value: "33" },
table: "tbl_test",
saveType: SaveType.insert //替换
},
{
data: { id: 2 },
table: "tbl_test",
saveType: SaveType.delete //删除
}
]);
...
例子8 事务操作
const mssqli = require("mssql-i");
const { Save, SaveType, Transaction } = mssqli;
...
let tran;
try {
tran = await Transaction.begin(conn);
await Save.savesSeq(
conn,
[
{
data: { id: 1, value: "1" },
table: "tbl_test",
saveType: SaveType.insert
},
{
data: { id: 2, value: "2" },
table: "tbl_test",
saveType: SaveType.insert
},
{
data: { id: 3, value: "3" },
table: "tbl_test",
saveType: SaveType.insert
},
{
data: { id: 4, value: "4" },
table: "tbl_test",
saveType: SaveType.insert
}
],
tran
);
await Transaction.commit(tran);
} catch (err) {
await Transaction.rollback(tran);
}
...
例子9 查询
...
const mssqli = require("mssql-i");
const { Select } = mssqli;
...
let result = await Select.select(conn, {
sql: "select * from tbl_test where id=?", //SQL语句
where: ["1"] // 条件
});
console.log(result);
result = await Select.selects(conn, [
{ sql: "select * from tbl_test where id = ?", where: ["1"] },
{ sql: "select * from tbl_test where value like '%1%'" }
]);
console.log(result);
result = await Select.selectSplitPage(conn, {
sql: "select *, row_number() over(order by id) as row_number from tbl_test where id=?", //需要提供 row_number 字段,根据此字段来分页
where: [1], // 条件
pageSize: 2,
index: 1
});
console.log(result);
...
例子10 执行存储过程
const mssqli = require("mssql-i");
const { Procedure } = mssqli;
...
let result = await Procedure.exec(conn, {
procedure: "p_insert",
data: {par1: '1', par2: '2'}, // 参数
});
console.log(JSON.stringify(result));
...