# dmdb

> DM database driver

Latest version **1.0.52452** (published 2026-07-22) · 0 weekly downloads

## Install

```sh
npm install dmdb
pnpm add dmdb
yarn add dmdb
bun add dmdb
```

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 1.0.52452 |
| Published | 2026-07-22 |
| First published | 2020-09-02 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >= 12 |
| Dependencies | 1 |
| Unpacked size | 849.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Dameng Database |
| Maintainers | dameng_database |

## Links

- npm: https://www.npmjs.com/package/dmdb
- npm.io page: https://npm.io/package/dmdb

## Dependencies (1)

- [iconv-lite](https://npm.io/package/iconv-lite.md) ^0.5.1

## Recent versions

- 1.0.52452 (latest) — 2026-07-22
- 1.0.49630 — 2026-05-21
- 1.0.48286 — 2026-03-23
- 1.0.46190 — 2026-01-20
- 1.0.45146 — 2025-12-23
- 1.0.43524 — 2025-11-14
- 1.0.40189 — 2025-08-20
- 1.0.38220 — 2025-07-02
- 1.0.36002 — 2025-05-12
- 1.0.34946 — 2025-04-07
- 1.0.33801 — 2025-02-26
- 1.0.32369 — 2025-02-11
- 1.0.31017 — 2024-12-09
- 1.0.30381 — 2024-11-14
- 1.0.24984 — 2024-04-30
- … 13 more at https://npm.io/package/dmdb/versions

## README

# dmdb

此包为Node.js连接达梦8数据库的原生驱动，API详见安装目录下的《DM8程序员手册》

仅支持Node.js 12 及以上

## Extensions
- 支持 [typeorm](https://www.npmjs.com/package/typeorm) 框架，详情见 [typeorm-dm](https://www.npmjs.com/package/typeorm-dm)
- 支持 [knex](https://www.npmjs.com/package/knex) 框架，详情见 [knex-dm](https://www.npmjs.com/package/knex-dm)

## Change Logs

### dmdb v1.0.52452(2026-07-21)
- 修复查询日期时间类型，毫秒值错误的问题
- 修复`Connection.executeMany()`批量执行接口在指定参数iterations且语句存在绑出参数时，结果不正确的问题

### dmdb v1.0.49630(2026-05-20)
- *更新许可协议，详见LICENSE文件

### dmdb v1.0.48286(2026-03-23)
- *内部Buffer性能优化
- *`Connection.executeMany()`批量执行接口的绑出参数`Results.outBinds`的格式从以行分组改为以列分组，与oracledb表现一致
- 修复了以绑定参数插入一定长度的字符串时的报错：[6067] 字符串截断
- 删除`ResultSet.getRowCount()`接口，因为仅向前结果集在遍历完成前无法提前获取总行数
- 连接池默认别名改为'default'，根据别名未获取到连接池时改为报错
- 一些兼容oracledb特性的调整
- 新增连接串参数: cmini、pstmtPoolSize、pstmtPoolValidTime。详情查看index.d.ts文件中ConnectionAttributes

### dmdb v1.0.46190(2026-01-20)
- 修复了以流方式读取带有emoji字符的大字段时的报错：[6057] 长度或偏移错误

### dmdb v1.0.45146(2025-12-22)
- 修复了连接老版本数据库并以绑定参数插入长字符串时的报错：Bind param data failed by invalid param data type
- 修复了查询结果集与结果集遍历之间执行任意语句可能导致的报错：[-2002] 执行未准备SQL语句
- 修复了批量执行方法会修改绑入的数组参数值的问题
- ResultSet和Lob对象不支持并发操作
- 修改结果集最大行数配置策略，优先级顺序从高到低如下：
  - 执行选项 `ExecuteOptions.maxRows`
  - 驱动全局配置 `dmdb.maxRows`
  - 连接串属性/连接属性 `localhost:5236?maxRows=0` / `ConnectionAttributes.maxRows`

### dmdb v1.0.43524(2025-11-14)
- *执行结果中的绑出参数`Result.outBinds`/`Results.outBinds`的返回格式原先固定为数组，现改为由绑定参数格式控制。若绑定参数按照位置绑定，则绑出参数格式为数组；若绑定参数按照名称绑定，则绑出参数格式为对象。
- *新增驱动全局配置 `dmdb.outBindFormat`，可控制上述特性，建议老版本驱动升级到此新版本时，设置`dmdb.outBindFormat = dmdb.OUT_FORMAT_ARRAY`以保证特性与原来一致（即绑出参数格式固定为数组），以免引起兼容性问题，配置说明详见index.d.ts文件
- 按照位置绑定参数时，若绑定参数个数大于实际所需要的参数个数，则报错：绑定参数个数过多
- NaN/Infinity/-Infinity绑定参数时，策略由绑入NULL值改为报错无效的数值

### dmdb v1.0.40189(2025-08-20)
- 与数据库服务器的内部通信协议版本从v10升级到v21
- 支持服务器连接心跳
- 连接串参数rwSeparate类型从boolean调整为number
- 连接串参数epSelector取值范围和策略调整

### dmdb v1.0.38220(2025-07-02)
- 修复用服务名连接时的空指针报错问题
- 修复开启读写分离时，连接池连接关闭所导致的读写分离功能失效问题
- 整型number参数绑定默认类型从DOUBLE改为BIGINT

### dmdb v1.0.36002(2025-05-12)
- 与数据库服务器的内部通信协议版本从v8升级到v10
- 修复服务器ini参数NUMBER_MODE=1时，DECIMAL类型的列插入错误的问题

### dmdb v1.0.34946(2025-04-07)
- 第三方依赖包snappy改为可选，安装和使用驱动时不再强制要求安装snappy依赖。若数据库服务器和数据库驱动通信开启了snappy压缩，则要求必须安装snappy依赖
- snappy依赖现提供两种选择：[snappy](https://www.npmjs.com/package/snappy) 和 [snappyjs](https://www.npmjs.com/package/snappyjs)
  - snappy    性能好，兼容性差，大多数情况下优先考虑snappy
  - snappyjs  纯JavaScript实现的库，兼容性好，国产CPU和操作系统建议用snappyjs
- 优化自动提交配置策略，优先级顺序从高到低如下：
  - 执行选项 `ExecuteOptions.autoCommit` / `ExecuteManyOptions.autoCommit`
  - 驱动全局配置 `dmdb.autoCommit`
  - 连接串属性/连接属性 `localhost:5236?autoCommit=true` / `ConnectionAttributes.autoCommit`
- 修复一些绑出参数问题
- 连接串参数switchInterval默认值从1000改为200

### dmdb v1.0.33801(2025-02-26)
- 因影响typeorm-dm，回滚v1.0.31017部分修改，不再支持通过执行选项`ExecuteOptions.outFormat`设置执行结果中的绑出参数`Result.outBinds`的返回格式为数组或对象，绑出参数固定为数组

### dmdb v1.0.32369(2025-02-11)
- *修复了日期时间类型在不同时区下转换错误的问题
- 修复了查询小于公元100年的年份数值错误的问题
- 连接串参数localTimezone的取值范围从-720~720调整为-779~840

### dmdb v1.0.31017(2024-12-09)
- 修复了游标类型的绑出参数始终为null的问题，游标类型的绑出参数会根据执行选项`ExecuteOptions.resultSet`返回ResultSet对象或所有数据行
- 支持通过执行选项`ExecuteOptions.outFormat`设置执行结果中的绑出参数`Result.outBinds`的返回格式为数组或对象

### dmdb v1.0.30381(2024-11-14)
- 查询结果集中，JSON或JSONB类型的数据，自动解析成JSON对象返回（需服务器执行码也支持区分JSON/JSONB和CLOB），该特性控制开关见index.d.ts文件中的
  - parseJson: boolean

### dmdb v1.0.24984(2024-04-30)
- 新增以流的方式读取结果集，详情查看index.d.ts文件中的API：
  - Connection.queryStream(sql: string, bindParams: BindParameters, options: ExecuteOptions): Readable
  - ResultSet.toQueryStream(): Readable

### dmdb v1.0.19862(2023-09-18)
- 修复了以服务名方式连接数据库时，因设置了错误的通信协议版本号导致解析服务器返回的消息Buffer失败的问题

### dmdb v1.0.18856(2023-08-18)
- 修复了连接串属性schema在连接池中失效的问题
- 修复了连接池加服务名方式连接数据库导致的资源泄露问题
- 新增连接串参数: language。指定客户端语言，将报错信息按照指定语言返回，目前支持简体中文，英文和繁体中文。详情查看index.d.ts文件中ConnectionAttributes.language

### dmdb v1.0.17128(2023-05-06)
- 新增连接串参数: injectArray。绑定参数为数组时，是否直接注入到SQL语句中，非数组类型的参数不受影响。详情查看index.d.ts文件中ConnectionAttributes.injectArray
- 支持在连接串上直接配置动态服务名，使用示例：dm://user:password@GroupName?GroupName=(host1:port1,host2:port2,...)

### dmdb v1.0.15238(2023-02-02)
- *从数据库中查询BIGINT列，结果集中该列数据的类型从js的bigint类型修改为了js的number类型
  注：如果数据库中该列的值超过js number的安全范围，即-(2^53 - 1) 到 2^53 - 1，则不能保证数据正确性！可以参考dm.fetchAsString和dm.ExecuteOptions.fetchInfo将数值转为字符串来解决
- *修复了字符大字段(CLOB/TEXT)中存在乱码字符时，读取结果不正确的问题
- *修复了连接串属性doSwitch=1时，(服务名中的)连接不会自动切换和自动重连的问题
- 与数据库服务器的内部通信协议版本从v2升级到v8
- 修复了在极低概率下(约1/65536)，因加解密逻辑的缺陷，创建连接时报错：[-2501] 用户名或密码错误
- 修复了Node.js v14中关闭数据库连接后，Socket占用内存无法被回收的问题

### dmdb v1.0.14280(2022-11-24)
- 修复了Node.js v16及以上版本使用驱动时出现的意外报错：[-4058] ENOENT

### dmdb v1.0.13216(2022-10-09)
- *第三方依赖snappy从v6升级到v7以支持ARM平台安装和使用驱动
- 修复了当语句或参数长度超过64K字节导致的Buffer写入越界的问题

### dmdb v1.0.11090(2022-06-08)
- *连接池新增等待队列功能。当连接池中连接数达到上限，后续的`getConnection()`获取连接请求可以被加入到等待队列中，直到连接池内有可用连接，而不是像原来那样直接报错。相关配置参数如下：
  - queueRequests：连接池达到最大连接数后，后续获取连接请求是否进入等待队列，默认true
  - queueMax：获取连接请求等待队列最大长度，-1表示无限制，默认500
  - queueTimeout：进入等待队列的获取连接请求在等待多少毫秒后，认为请求失败，单位毫秒，0表示永久等待，默认60000

### dmdb v1.0.10728(2022-04-18)
- *从数据库中查询NUMBER/NUMERIC列，结果集中该列数据的类型从js的string类型修改为了js的number类型
  注：如果数据库中该列的值超过js number的安全范围，即-(2^53 - 1) 到 2^53 - 1，则不能保证数据正确性！可以参考dm.fetchAsString和dm.ExecuteOptions.fetchInfo将数值转为字符串来解决
- *修复了在获取连接池连接时，当连接已失效且池中连接数小于poolMin阈值时，连接没有自动重连的问题
- 修复了存储过程绑入boolean类型的参数到其他数据类型导致执行失败的问题

### dmdb v1.0.7697 (2021-08-23)
- *缓存Buffer改进，对于批量执行的大数据量操作有极大的性能提升，建议老版本驱动更新到此版本
- 对数据库集群的连接做了一些优化处理和功能新增
- 日期时间的返回格式更精确
- 支持更多连接串属性，详情查看index.d.ts文件中的API

---
_Source: https://npm.io/package/dmdb · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
