Skip to content

JDBC databases ​

The official JDBC databases plugin adds databases that QueryLane has no built-in driver for. It talks to them through their JDBC drivers, so a connection to Oracle or Snowflake works in the explorer, the query editor, the table view, imports, exports and jobs the same way a PostgreSQL connection does.

DatabaseWhat you connect to
OracleOracle Database by service name
IBM Db2Db2 for Linux, UNIX and Windows
SnowflakeA Snowflake account and warehouse
DatabricksA SQL warehouse or cluster with a personal access token
Google BigQueryA project with a service account key
TeradataTeradata Vantage
Apache HiveHiveServer2
Apache Spark SQLThe Spark Thrift server
FirebirdA Firebird server
TrinoTrino and Starburst clusters
H2An H2 database file
Own JDBC driverAny database whose JDBC driver jar you have

The plugin needs QueryLane 1.4.0 or later and asks for Network access, Downloads components, Runs programs and User files.

Install the plugin ​

  1. Open Settings > Plugins and install JDBC databases. See Using plugins.
  2. Wait while the status shows Installing components and Getting ready. The plugin downloads a Java runtime, Eclipse Temurin 21, from Adoptium and checks it against the checksum Adoptium publishes, so the computer must be online. Behind a proxy, choose it in Settings > Updates > Proxy mode; the runtime and the drivers download through it.

If the download fails, the plugin page shows the error and a Set up button to try again. The runtime and drivers stay in the plugin folder and are removed with the plugin, so you do not need Java on your computer.

Add a connection ​

  1. In Connections > Data sources, click + (Add source).
  2. Choose the database, or find it with Search or paste a connection string. JDBC databases join the groups of the built-in engines, and your own driver is under Other databases.
  3. Enter a Connection name and fill in the fields of the database on the Basic tab, listed below.
  4. Read the driver license from the link and turn on I accept the driver license.
  5. Click Test, then Create.

On the first connection, QueryLane downloads the driver from Maven Central and checks it against a checksum pinned in the plugin, so a changed file is refused. Each database gets its own driver, and drivers are downloaded only after you accept their license, through the same proxy as the plugin. Drivers download through HTTP proxies, with a user name and password in the proxy address when it asks for them. The Teradata license allows its driver only with a licensed Teradata database, and Db2 for z/OS and IBM i also need a Db2 Connect license.

DatabaseFields
OracleHost, Port (1521), Service name such as FREEPDB1, User, Password
IBM Db2Host, Port (50000), Database, User, Password
SnowflakeAccount such as myorg-myaccount, Warehouse, Database, Schema, Role, User, Password
DatabricksServer hostname, HTTP path from the connection details of the SQL warehouse, Access token, Catalog, Schema
Google BigQueryProject ID, Default dataset, Service account key: the JSON key file of a service account
TeradataHost, Port (1025), Default database, User, Password
Apache Hive, Apache Spark SQLHost, Port (10000), Database, User, Password
FirebirdHost, Port (3050), Database: a path on the server or an alias, User, Password
TrinoHost, Port (8080), Catalog, Schema, User, Password
H2Database file, Create the file if it is missing, User, Password

Every database also has JDBC URL and Driver properties on the Advanced tab. A URL replaces the fields above it, and properties go one key=value per line, for example ssl=true. Oracle, Db2, Teradata, Hive, Spark SQL, Firebird and Trino can also connect through an SSH tunnel.

Passwords, tokens and the other secret fields are kept in the encrypted vault, as for any connection. See Where passwords are stored.

Your own driver ​

Own JDBC driver connects any database with a JDBC driver:

  • Driver jar: the path to the driver, or several jars separated by commas;
  • Driver class, such as com.example.jdbc.Driver;
  • JDBC URL, such as jdbc:example://host:port/database;
  • User, Password and Driver properties.

QueryLane uses standard JDBC metadata and SQL with such a driver. The explorer, queries, the table view and exports work with most drivers, while query plans are not available.

What works ​

JDBC connections work like built-in ones:

  • the explorer with catalogs, schemas, tables and views, and object details with columns, keys and DDL;
  • the query editor with completion, results as a table or JSON, and stopping a running query;
  • the table view with filters, sorting and paging, and row editing in tables with a primary key;
  • creating, renaming and dropping tables, import and export;
  • SQL steps in jobs, and the schema for the assistant and agents.

Explain shows the plan of a query on every database except BigQuery and your own driver. On Db2, the plan needs the explain tables; create them once with CALL SYSPROC.SYSINSTALLOBJECTS('EXPLAIN', 'C', NULL, CURRENT SCHEMA).

Some databases set their own limits:

  • Hive and Spark SQL change rows only in tables that support it, such as Hive ACID or Delta tables, and have no primary keys to edit rows by.
  • Trino, Hive and Spark SQL commit each statement on its own, so a change or an import that fails halfway keeps what it wrote before the error.
  • Firebird cannot rename tables.

All JDBC connections share one Java process. It starts with the first connection and quits five minutes after the last one closes.

Agents with read-only access ​

With Read only in the Agents block of a connection, QueryLane refuses statements that change data or schema on every database, see Agent access. Some databases add a second guard:

  • Oracle, Firebird and Trino run such queries in a read-only transaction, and the database itself refuses writes.
  • Db2 has no read-only transaction, so QueryLane runs such queries in a transaction and always rolls it back.
  • Snowflake, Databricks, BigQuery, Teradata, Hive, Spark SQL, H2 and your own driver have only the statement check. The Agents block says so, and a login that can only read is the real boundary there.