@frank-x/dsh-dm-jdbc
v0.1.0-alpha.1
Published
DM (达梦) database JDBC provider using Java child process bridge
Readme
@frank-x/dsh-dm-jdbc
DM (达梦) database JDBC provider using Java child process bridge.
Overview
This package implements the DmExecutor interface using a Java child process that communicates with the DM database via JDBC. It provides a bridge between Node.js and Java for database operations.
Installation
npm install @frank-x/dsh-dm-jdbcRequirements
- Java Runtime Environment (JRE) 8+
- DM JDBC driver (
dmjdbc8.jar)
Configuration
plugins:
dm-jdbc:
# Path to DM JDBC driver directory
driverPath: /opt/dm/dmjdbc8.jar
# Java executable path (optional, default: java)
javaPath: java
# Connection timeout in milliseconds (optional, default: 10000)
connectTimeoutMs: 10000
# Query execution timeout in milliseconds (optional, default: 30000)
queryTimeoutMs: 30000Usage
import { Context } from '@deepseek-ai/cordis'
import { DmJdbcExecutor } from '@frank-x/dsh-dm-jdbc'
const ctx = new Context()
await ctx.plugin(DmJdbcExecutor, {
driverPath: '/opt/dm/dmjdbc8.jar',
})
// Connect to database
await ctx.dm.connect('mydb', {
host: 'localhost',
port: 5236,
user: 'dba',
password: 'password',
database: 'mydb',
})
// Execute SQL
const result = await ctx.dm.execute('mydb', 'SELECT * FROM users')
console.log(result.columns, result.rows)
// Test connection
const testResult = await ctx.dm.testConnection('mydb')
console.log(testResult.success, testResult.version)
// Get schema
const schema = await ctx.dm.getSchema('mydb', { tablePattern: 'users' })
console.log(schema.tables)
// Disconnect
await ctx.dm.disconnect('mydb')Architecture
The package uses a Java child process bridge for JDBC communication:
- JdbcBridge - Manages the Java process lifecycle and JSON communication
- DmJdbcExecutor - Implements the
DmExecutorinterface using the bridge - DmBridge.java - Java source for JDBC operations
License
MIT
