Files
pnoker 769d1cb977 style: apply repository-wide formatting
- expand single-line Javadocs to multi-line blocks, rewrap Markdown prose, and reflow POM, YAML, and TypeScript formatting
- formatting only: no Java code lines changed, no build-file semantics changed
- verified: backend compile and check_documentation.py pass, pnpm check and pnpm lint:check pass, and the dc3 YAML files parse
2026-08-25 13:35:00 +08:00

80 lines
3.7 KiB
Markdown

# DC3 Driver SQL Server
## Overview
`dc3-driver-sqlserver` is the Microsoft SQL Server database driver of the IoT DC3 platform. It connects to a SQL Server
instance via JDBC, reads point values by executing configured SQL `SELECT` queries on a schedule, and writes / executes
SQL for write commands. It builds on the shared `AbstractJdbcDriverCustomService` from
`dc3-common-sql`, which constructs the JDBC URL
`jdbc:sqlserver://<host>:<port>;databaseName=<database>;encrypt=<encrypt>;trustServerCertificate=<...>;`
using the `com.microsoft.sqlserver.jdbc.SQLServerDriver`.
## Module Information
- **Group ID**: io.github.pnoker
- **Artifact ID**: dc3-driver-sqlserver
- **Driver Name**: SQL Server Driver
## Driver Attributes (Device-level)
| Attribute | Code | Type | Default | Description |
|--------------------------|------------------------|--------|-----------|-------------------------------------|
| Host | host | STRING | localhost | SQL Server host |
| Port | port | INT | 1433 | SQL Server port |
| Database | database | STRING | | SQL Server database name |
| Username | username | STRING | root | SQL Server username |
| Password | password | STRING | | SQL Server password |
| Query Timeout | queryTimeout | INT | 30 | SQL query timeout in seconds |
| Encrypt | encrypt | STRING | false | SQL Server encrypt connection |
| Trust Server Certificate | trustServerCertificate | STRING | true | SQL Server trust server certificate |
## Point Attributes
| Attribute | Code | Type | Description |
|-------------|------------|--------|---------------------------------------------------------------------------------------|
| Read Query | readQuery | STRING | SQL SELECT query for reading point value |
| Write Query | writeQuery | STRING | SQL UPDATE/INSERT using a single `?` placeholder for the value (bound as a parameter) |
## Command Attributes (write)
| Attribute | Code | Type | Description |
|---------------|--------------|--------|----------------------------------|
| Execute Query | executeQuery | STRING | SQL query to execute for command |
The module `application.yml` is authoritative for attribute codes, types, default values, scheduling, health, and local
buffering. Keep this README aligned when those user-facing settings change.
## Prerequisites
A reachable Microsoft SQL Server instance. The connection URL, credentials, encryption flags, and the SQL queries to run
are all supplied through the driver and point attributes above — nothing is hardcoded.
## Running Locally
### 1. Start Infrastructure and Center Services
```bash
make up-db
make up-dev GROUP=core
```
### 2. Build and Run
```bash
mvn -s .mvn/settings.xml -pl dc3-driver/dc3-driver-sqlserver -am package
java -jar dc3-driver/dc3-driver-sqlserver/target/dc3-driver-sqlserver.jar
```
## Testing
Run the module tests from the repository root:
```bash
mvn -s .mvn/settings.xml -pl dc3-driver/dc3-driver-sqlserver -am test
```
## Related Modules
- `dc3-common-driver` — Driver SDK for registration, scheduling, and RabbitMQ integration
- `dc3-common-sql` — `AbstractJdbcDriverCustomService` base class providing JDBC read/write logic