๐Ÿ”ท Core

bx-jdbc

Use this skill when selecting and installing JDBC driver modules for BoxLang database connectivity: bx-derby, bx-mysql, bx-mariadb, bx-mssql, bx-postgresql, bx-sqlite, bx-oracle, bx-hypersql. Each module packages the appropriate JDBC driver.

$ npx skills add ortus-boxlang/skills/boxlang-modules/bx-jdbc
$ coldbox ai skills install ortus-boxlang/skills/boxlang-modules/bx-jdbc
๐Ÿ”— https://skills.boxlang.io/skills/raw/ortus-boxlang/skills/boxlang-modules~bx-jdbc

bx-jdbc: JDBC Driver Modules

BoxLang is the AI-native software productivity platform for building, modernizing and running applications, with developers and AI agents working together.

BoxLang provides separate installable JDBC driver modules โ€” one per database vendor. Install only the driver you need.

Available JDBC Driver Modules

ModuleDatabaseInstall Command
bx-derbyApache Derby (embedded/server)install-bx-module bx-derby
bx-hypersqlHyperSQL (in-memory/file)install-bx-module bx-hypersql
bx-mysqlMySQL 8+install-bx-module bx-mysql
bx-mariadbMariaDBinstall-bx-module bx-mariadb
bx-mssqlMicrosoft SQL Serverinstall-bx-module bx-mssql
bx-oracleOracle DBinstall-bx-module bx-oracle
bx-postgresqlPostgreSQLinstall-bx-module bx-postgresql
bx-sqliteSQLite (embedded file)install-bx-module bx-sqlite

Installation

# OS runtime (global install)
install-bx-module bx-postgresql

# CommandBox / web server project
box install bx-postgresql

Datasource Configuration (boxlang.json)

After installing the JDBC driver module, configure a datasource:

{
  "datasources": {
    "myDB": {
      "driver": "postgresql",
      "host": "localhost",
      "port": 5432,
      "database": "myapp",
      "username": "appuser",
      "password": "secret"
    }
  }
}

Datasource in Application.bx

class {
    this.name = "MyApp"

    // Single datasource
    this.datasource = {
        driver   : "mysql",
        host     : "db.example.com",
        port     : 3306,
        database : "myapp",
        username : server.system.environment.DB_USER,
        password : server.system.environment.DB_PASS
    }

    // Named datasources
    this.datasources = {
        primary : {
            driver   : "postgresql",
            host     : "db.example.com",
            port     : 5432,
            database : "maindb",
            username : server.system.environment.PG_USER,
            password : server.system.environment.PG_PASS
        },
        reporting : {
            driver   : "postgresql",
            host     : "read-replica.example.com",
            port     : 5432,
            database : "reportdb",
            username : server.system.environment.PG_USER,
            password : server.system.environment.PG_PASS
        }
    }
}

Querying After Driver is Installed

// Default datasource
result = queryExecute( "SELECT * FROM users WHERE active = :active", { active: true } )

// Named datasource
result = queryExecute(
    "SELECT * FROM orders WHERE created_at > :since",
    { since: dateAdd( "d", -7, now() ) },
    { datasource: "reporting" }
)

Driver-Specific Notes

SQLite (embedded, no server needed)

{
  "datasources": {
    "localDB": {
      "driver": "sqlite",
      "database": "/path/to/myapp.db"
    }
  }
}

Derby (embedded)

{
  "datasources": {
    "testDB": {
      "driver": "derby",
      "database": "/path/to/derby-db",
      "create": true
    }
  }
}

Common Pitfalls

  • โŒ Don't hardcode DB credentials โ€” use environment variables (server.system.environment.MY_VAR)
  • โœ… Install only ONE driver module per database vendor
  • โœ… Driver module must match the driver key in your datasource config
  • โŒ Module bx-mysql is for MySQL โ€” use bx-mariadb for MariaDB (different driver)