Connection Manager¶
The Connection Manager is the central place in Sui for creating and maintaining JDBC connection profiles. Open it from the menu bar: File → Connection Manager…
Overview¶
The dialog is divided into two areas:
- Left panel — the list of all saved connection profiles (aliases).
- Right panel — a three-tab editor for the selected profile and global settings.
Changes are held in memory until you click Save. Clicking Cancel discards all changes.
Left Panel — Connection List¶
Each entry in the list represents one saved connection profile, identified by a short
alias name of your choosing (e.g. MyDB2Prod, LocalMariaDB).
| Button | Action |
|---|---|
| New | Adds a blank profile at the bottom of the list. |
| Copy | Duplicates the selected profile. The copy gets the name Copy_of_<alias>. Auto-login is never copied — you must re-enable it deliberately. |
| Remove | Marks the selected profile for deletion. It is actually removed from SuiConnProp.pro when you click Save. |
Click any alias in the list to load it into the editor on the right.
Tab 1 — Connection¶
This tab holds the per-connection details.
Alias¶
A short, memorable name for the connection. This is the label that appears in the
URL combobox on the main Sui panel. Choose something descriptive, for example
DB2-Production, BQ-Analytics, SQLite-LocalTest.
Alias names must be unique. If you type a name that already exists, the existing profile will be silently overwritten on Save.
Group¶
An optional, free-form label that groups several aliases together when they share
the same userid and password — for example several schemas or environments reached
through the same login (Prod, Reporting-Cluster, …). The field is an editable
combo box: pick an existing group from the drop-down or type a new label. Leave it
blank for connections that don't share credentials with any other alias.
Grouping does not change what is saved to disk — it only affects in-session behaviour: once you successfully connect to one alias in a group, its userid and password are automatically filled in when you switch to another alias in the same group that has not already been connected during the current session. A URL that was itself already connected this session keeps using its own remembered credentials — the group's credentials are never used to override them. See CredentialHandling.md for the exact priority rules.
Driver¶
A dropdown of all known JDBC drivers, loaded from the bundled driver.pro resource.
Selecting a driver updates the visible form fields and the URL template used to
auto-build the JDBC URL.
Drivers that need an external JAR (e.g. Oracle, MariaDB — and DB2/BigQuery if
you built Sui from source with the minimal/nodb2/nobq Maven profile) will
show ✘ Not loaded in the Driver/JAR tab until you point the catalog to the
JAR file. Drivers that are available on the classpath (e.g. SQLite, H2, and
DB2/BigQuery in the default full build) will show ✔ On classpath without
any additional configuration.
Server, Port, Database / Project, SID¶
These fields are shown or hidden automatically depending on the selected driver:
| Field | Shown for |
|---|---|
| Server | Networked databases — DB2, MariaDB, MySQL, PostgreSQL, Oracle, SQL Server, … |
| Port | Same drivers; also always shown for BigQuery (defaults to 443) |
| Database | Most drivers — the database or schema name to connect to |
| Project | BigQuery only — your Google Cloud project ID |
| SID | Oracle only — the Oracle System Identifier |
SQLite and other file/URL-only drivers hide all four fields and let you type the JDBC URL directly instead.
URL¶
The full JDBC connection string.
- When the selected driver has a URL template (most drivers), this field is computed automatically from the Server/Port/Database/SID values as you type. The field has a grey background to indicate it is read-only in this mode.
- When the driver has no template, the field is white and directly editable — type
or paste the complete JDBC URL yourself (e.g.
jdbc:sqlite:/home/user/mydb.db).
The auto-computed URL is the value that is saved and used when connecting. If you
need to add extra parameters (e.g. ?useSSL=false), switch to a driver that has no
template and type the URL manually, or use the JDBC Properties tab for per-prefix
properties.
Tip for BigQuery: The URL template fills in the port automatically. You only need to enter the Project ID in the Database/Project field.
User and Password¶
The JDBC user ID and password for this connection.
- The password field is masked (
***). Click Show to reveal it and Hide to mask it again. - The password is stored in memory only until Save. Whether it is written to disk depends on the Auto-login checkbox (see below).
Auto-login¶
| State | Behaviour |
|---|---|
| Off (default) | Password is never written to SuiConnProp.pro. The sentinel value null is stored in its place. You must type your password each session. |
| On | Password is written to SuiConnProp.pro in plain text on Save. When you select this URL in the main panel, the password is injected into the Password field automatically. |
Security note:
SuiConnProp.prois a plain-text file stored in your Sui home directory. Only enable Auto-login on machines and accounts where that file is adequately protected. See CredentialHandling.md for details.
Test Connection¶
Click Test Connection to immediately open a JDBC connection using the current URL, User, and Password values. The result appears inline below the button:
- Green — connection succeeded; the database product name and version are shown
(e.g.
Connected: DB2/LINUXX8664 11.5.9.0). - Red — connection failed; the full exception message is displayed so you can diagnose the issue (wrong password, driver not loaded, host unreachable, etc.).
The test runs in a background thread so the dialog stays responsive while connecting.
Tab 2 — Driver / JAR¶
This tab manages the global driver catalog — the mapping from driver class names to their JAR files. Changes here affect all connections that use the same driver class.
The table has four columns:
| Column | Description |
|---|---|
| Name | Human-readable display name (editable) |
| Driver Class | Fully qualified Java class name (editable) |
| JAR / Path | Path to the driver JAR file. Supports *.jar glob patterns to load all JARs in a folder (useful for multi-JAR drivers). |
| Status | ✔ Registered / ✔ On classpath / ✔ In JAR / ✘ Not loaded — colour-coded |
The status column is probed automatically at these levels (in order):
- ✔ Registered — the driver is already registered with
DriverManager(was loaded in a previous connection this session). - ✔ On classpath — the class is available in the system classloader (bundled in
Sui.jaror part of the JDK, e.g. SQLite). - ✔ In JAR — found in one of the external JARs listed in
SuiCPProp.pro. - ✘ Not loaded — the class was not found anywhere. You need to provide a JAR path.
Buttons¶
| Button | Action |
|---|---|
| Add | Inserts a blank row for a custom driver not in the bundled list. |
| Remove | Deletes the selected row from the catalog. |
| Browse JAR… | Opens a file chooser pre-set to the directory of the currently entered path. Select the driver .jar file; the path is written into the JAR/Path column. |
| Reload JARs | Saves all current JAR paths to SuiConnProp.pro then reloads every driver from its JAR immediately — no restart needed. The Status column refreshes in the background. |
Setting up a new driver JAR¶
- Select the driver row (or click Add to create one).
- Click Browse JAR… and navigate to the
.jarfile (e.g.db2jcc4.jar). - Click Reload JARs — the Status column should change to ✔.
- Click Save to persist the JAR path.
For drivers that come as multiple JARs in one folder, enter the folder path with a
glob: C:\drivers\oracle\*.jar. The Reload and Save actions expand the glob.
Tab 3 — JDBC Properties¶
A key/value table backed by SuiConnPref.pro. These properties are passed directly to
DriverManager.getConnection() when the JDBC URL matches the key prefix.
Key format: url-prefix.property-name
When Sui opens a connection, it scans every entry in this table and includes all entries whose key prefix matches the beginning of the target JDBC URL. This means you can define properties at two levels of specificity: specific (targeting one exact connection URL) or generic (targeting all connections that share the same driver prefix).
Specific properties — one connection only¶
Prefix the key with the full JDBC URL of the target connection, then append a dot and the property name. Only connections whose URL starts with that full string will pick up the property.
Example — set the default schema to kjell for one particular DB2 database:
When Sui connects to jdbc:db2://localhost:50000/sample, the prefix
jdbc:db2://localhost:50000/sample matches exactly, so currentSchema=kjell is passed
to the driver. A different DB2 database — say jdbc:db2://prodserver:50000/finance —
does not match this prefix and therefore does not receive the property.
This is useful for settings that should only apply to one specific database instance, such as a default schema, a particular isolation level, or a connection-level time zone.
Generic properties — all connections for a driver¶
Prefix the key with only the jdbc:<subprotocol> part of the URL (no host, port, or
database). Every connection whose URL begins with that short prefix will receive the
property.
Example — apply a timestamp format preference to all DB2 connections:
When Sui connects to any jdbc:db2://… URL, the prefix jdbc:db2 matches, so
timestampFormat=1 is injected for every DB2 connection regardless of host or database.
Other generic examples:
Precedence — most specific prefix wins¶
When Sui evaluates the table, it finds all entries whose prefix matches the target URL, then applies only the longest matching prefix for each property name. A more specific entry therefore always silently overrides a more generic one for the same property, regardless of the order the rows appear in the table.
Example: both of the following match jdbc:db2://localhost:50000/sample:
Sui sets currentSchema=kjell because the second prefix is longer. The generic row
still applies to all other DB2 connections that do not have a specific override.
Use JDBC Properties for driver-specific settings that cannot be embedded in the URL,
such as:
- Default schema or catalog (currentSchema, searchPath, …)
- SSL/TLS options (sslmode, sslcert, …)
- Connection timeouts
- Character set overrides
- BigQuery OAuth settings
- Timestamp and date format preferences
Buttons¶
| Button | Action |
|---|---|
| Add Row | Inserts a blank row at the bottom of the table. |
| Delete Row | Removes the selected row. |
DB2 — Common JDBC Properties¶
The IBM DB2 JDBC driver (com.ibm.db2.jcc.DB2Driver) accepts a long list of
connection properties that influence statement preparation, error reporting,
timestamp behaviour, and metadata semantics. The most useful ones for everyday
Sui use are listed below. All of them are set the same way: add a row in the
JDBC Properties tab with key jdbc:db2.<propertyName> (generic — applies to
every DB2 connection) or jdbc:db2://host:port/db.<propertyName> (specific —
applies to one URL only).
Property reference¶
| Property | Typical value | Effect |
|---|---|---|
clientProgramName |
Sui or Sui-<user> |
Free-form string (max 255 bytes) that DB2 records in SYSIBMADM.MON_CURRENT_SQL / WLM_GET_WORKLOAD_OCCURRENCES and shows in monitoring tools such as Data Server Manager. Lets a DBA see which tool is running a query, not just the OS user. |
deferPrepare |
true (default) / false |
When true, PreparedStatement.prepareStatement() does not send a PREPARE to the server immediately; the PREPARE is folded into the first EXECUTE for one less network round-trip. Set to false when you want the PREPARE error reported at prepare time (e.g. when running ad-hoc SQL through Sui and you want syntax errors flagged before the row fetch starts). |
retrieveMessagesFromServerOnGetMessage |
true (recommended) / false (default) |
Controls whether SQLException.getMessage() returns the full DB2 server-side message text (including substitution tokens and SQLCODE description) or just the short token form. Strongly recommended to set to true — without it, Sui will display cryptic messages like DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=KJELL.NOSUCHTABLE instead of the human-readable explanation. |
timestampFormat |
0 (default) / 1 |
When 1, ResultSet.getString() on a TIMESTAMP column returns the JDBC-spec form yyyy-mm-dd hh:mm:ss[.fffffffff] instead of the DB2 native form yyyy-mm-dd-hh.mm.ss.ffffff. Set to 1 if you copy/paste timestamps from the result grid into other tools that expect the standard format. |
timestampPrecisionReporting |
0 (default) / 1 |
When 1, ResultSetMetaData.getPrecision() and getColumnDisplaySize() report 26 for a TIMESTAMP(6) column (matching the textual width including punctuation) instead of the raw fractional-seconds precision (6). Affects how Sui sizes the TIMESTAMP columns in the result grid. |
useJDBC4ColumnNameAndLabelSemantics |
1 (default) / 2 |
Controls what ResultSetMetaData.getColumnName() and getColumnLabel() return. Value 1 follows the JDBC 4.0 spec: getColumnName() returns the underlying column name and getColumnLabel() returns the AS alias. Value 2 reverts to the older DB2 behaviour where both methods return the AS alias. Set to 2 if you have legacy reports that broke after upgrading the driver. |
Examples¶
Generic — apply to every DB2 connection:
jdbc:db2.clientProgramName = Sui
jdbc:db2.deferPrepare = false
jdbc:db2.retrieveMessagesFromServerOnGetMessage = true
jdbc:db2.timestampFormat = 1
jdbc:db2.timestampPrecisionReporting = 1
jdbc:db2.useJDBC4ColumnNameAndLabelSemantics = 1
Specific — only the production database gets the marker name:
Tip:
retrieveMessagesFromServerOnGetMessage=trueis the single most useful setting — it transforms otherwise opaque DB2 error messages into readable text in Sui's status bar and exception popups. Add it once as a genericjdbc:db2.row and forget about it.
DB2 — SSL / TLS Setup¶
DB2 supports SSL/TLS for the JDBC client–server connection. Sui drives this through the same JDBC Properties table — no Java command-line flags are required.
Step 1 — Server listens on an SSL port¶
The DBA enables SSL on the DB2 server and exposes a dedicated SSL port (commonly 50001, distinct from the cleartext port 50000). Verify the port with the DBA before continuing.
Step 2 — Add the SSL JDBC properties¶
Add the following rows to the JDBC Properties tab. The minimum set for a trusted-CA setup is just two properties:
| Property | Value | Effect |
|---|---|---|
sslConnection |
true |
Tells the JCC driver to negotiate TLS on the socket. Without this the driver opens a cleartext connection regardless of which port you point it at. |
sslTrustStoreType |
Windows-ROOT |
Uses the Windows certificate store (the same trust list as Edge / IE / Chrome) as the JDBC trust store. The Java runtime then trusts every CA root the OS trusts — no manual keytool import needed when your DBA's server certificate chains up to a public or enterprise CA already installed in Windows. |
sslTrustStoreLocation |
path to .jks / .p12 |
Optional. Use only if you do not use Windows-ROOT and want a private Java keystore instead. |
sslTrustStorePassword |
keystore password | Optional. Required only with sslTrustStoreLocation. The Windows-ROOT store is read-only and needs no password. |
sslVersion |
TLSv1.2 / TLSv1.3 |
Optional. Force a specific TLS version. The driver negotiates the highest mutually supported version by default, so this is rarely needed. |
Step 3 — Point the URL at the SSL port¶
Update the connection's URL (or the Server / Port fields, which auto-build the URL) so the port matches the SSL listener — e.g.:
Step 4 — Test¶
Click Test Connection on the Connection tab. A green response confirms the TLS handshake completed and the credentials were accepted.
Why Windows-ROOT?¶
sslTrustStoreType=Windows-ROOT is the path of least resistance on a Windows
workstation:
- No keystore file to manage. You don't have to copy
.cerfiles around, runkeytool -import, or remember a keystore password. - Picks up enterprise CA pushes automatically. When your IT department installs a new internal CA via Group Policy, JDBC trusts it immediately without any change to Sui or to a local keystore.
- Survives Java upgrades. The trust list is the OS's, not the JRE's
cacerts, so reinstalling or upgrading Java does not invalidate the trust.
If you are on Linux/macOS or need to trust a private CA that is not in the OS
store, fall back to sslTrustStoreLocation + sslTrustStorePassword pointing
at a .jks or .p12 file you build with keytool.
Full DB2 SSL example¶
A typical production-ready DB2 SSL profile with all of the above looks like this in the JDBC Properties tab:
jdbc:db2.sslConnection = true
jdbc:db2.sslTrustStoreType = Windows-ROOT
jdbc:db2.clientProgramName = Sui
jdbc:db2.retrieveMessagesFromServerOnGetMessage = true
jdbc:db2.timestampFormat = 1
…combined with a URL of jdbc:db2://prod.example.com:50001/PAYROLL on the
Connection tab.
BigQuery — Common JDBC Properties¶
The Google / Simba BigQuery JDBC driver (com.simba.googlebigquery.jdbc.Driver)
accepts a long list of connection properties. The handful that matter most for
day-to-day Sui use are listed below.
All of them are set the same way as DB2: add a row in the JDBC Properties tab
with key jdbc:big.<propertyName> (generic — applies to every BigQuery
connection) or jdbc:bigquery://…fullUrl.<propertyName> (specific — applies to
one connection only).
Why
jdbc:bigand notjdbc:bigquery? Sui matches each property key by the longest prefix that the target URL starts with. Since every BigQuery URL begins withjdbc:bigquery://…, the short prefixjdbc:bigmatches them all. Either spelling works;jdbc:bigis just shorter to type.
Property reference¶
| Property | Typical value | Effect |
|---|---|---|
OAuthType |
1 (recommended) / 0 / 2 / 3 |
Selects the Google authentication flow. 0 = service-account P12 key file, 1 = user account via browser (interactive OAuth — driver pops up your default browser, you sign in to Google, and the resulting refresh token is cached), 2 = pre-generated refresh token (headless), 3 = Google Application Default Credentials (uses gcloud auth application-default login). For a desktop tool like Sui, OAuthType=1 is the strong recommendation: no JSON or P12 key file to manage, no gcloud install required, and it works with both personal and corporate Google accounts. |
EnableSession |
0 (default) / 1 |
When 1, the driver opens a BigQuery session for the connection. This is what lets you run CREATE TEMP TABLE …, DECLARE variables, multi-statement scripts, and other session-scoped SQL that BigQuery otherwise rejects. Recommended 1 for interactive query work in Sui; leave 0 only if you need strictly stateless one-shot queries. |
Location |
US / EU / europe-west1 / asia-northeast1 / … |
The geographic location BigQuery should run the queries in. When omitted, the driver defaults to US. Must be set explicitly if your datasets live anywhere else — otherwise BigQuery returns "Dataset … was not found in location US" even though the dataset exists. Use the same string that appears in the BigQuery console for the dataset (EU for the multi-region, or the specific region name like europe-north1). |
Examples¶
Generic — apply to every BigQuery connection:
Specific — only the analytics project uses an EU location, everything else inherits the default:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=my-analytics.Location = europe-west1
First connect with OAuthType=1¶
- Set
jdbc:big.OAuthType = 1(andEnableSession = 1,Locationif needed) in the JDBC Properties tab. - On the Connection tab, leave User and Password empty — they are not used in this flow.
- Click Test Connection (or just connect normally from the main panel).
- The driver opens your default browser to a Google sign-in page. Choose the account that has access to the project and approve the requested scopes.
- The browser shows "You may close this window". The driver caches a refresh token locally so subsequent connects do not open the browser again.
- The connection completes and Sui shows the green Connected: Google BigQuery … response.
Tip: If you switch Google accounts later (or revoke the cached token in your Google account settings), the next connect will pop the browser again to let you re-authorise. No configuration change is needed inside Sui.
BigQuery (Google driver) — Setup and Common Properties¶
As of 2025, Google publishes its own open-source JDBC driver for BigQuery
(com.google.cloud.bigquery.jdbc.BigQueryDriver), in addition to the older
Simba/insightsoftware driver documented above. Unlike the Simba driver, the
Google driver is published on Maven Central and is bundled directly into
Sui.jar — select the BigQuery-Google entry in the Driver dropdown and it
shows ✔ On classpath immediately, with no JAR to download or configure.
Use BigQuery (Simba) if you already have working Simba-based connections or need Simba-specific features. Use BigQuery-Google for new connections — it requires no external JAR and is actively maintained by Google.
Connecting¶
- Select BigQuery-Google from the Driver dropdown.
- Port defaults to
443automatically. - In the Project field, enter
ProjectId=<your-project-id>(the whole key=value pair — not just the bare ID). - Leave User / Password empty — BigQuery uses OAuth, not username/password ("No credentials required" is checked automatically).
- Add authentication and other options via the JDBC Properties tab, keyed
jdbc:bigquery.<propertyName>(generic) — see below.
Authentication (OAuthType)¶
| Value | Mode | Notes |
|---|---|---|
0 |
Service account key file/JSON | Requires OAuthPvtKeyPath or OAuthPvtKey + OAuthServiceAcctEmail |
1 |
User account (interactive browser OAuth) | Opens a browser sign-in on first connect, like the Simba driver's OAuthType=1 |
2 |
Pre-generated access/refresh token | Requires OAuthAccessToken or OAuthRefreshToken + OAuthClientId/OAuthClientSecret |
3 |
Application Default Credentials (ADC) | Uses gcloud auth application-default login or GOOGLE_APPLICATION_CREDENTIALS |
4 |
Workload/Workforce Identity Federation (BYOID) | For CI/CD and cross-cloud identity federation |
Example generic JDBC Properties rows:
jdbc:bigquery.OAuthType = 3
jdbc:bigquery.DefaultDataset = my_dataset
jdbc:bigquery.EnableSession = true
jdbc:bigquery.Location = EU
Full property reference: see Google's JDBC driver for BigQuery documentation for the complete list (high-throughput Storage Read/Write API, OpenTelemetry export, proxy settings, etc.).
SQL Server — Common JDBC Properties¶
The Microsoft JDBC Driver for SQL Server (com.microsoft.sqlserver.jdbc.SQLServerDriver)
accepts a wide range of connection properties for authentication, encryption, and performance.
The most useful ones for Sui are listed below.
All of them are set the same way as DB2 and BigQuery: add a row in the JDBC Properties
tab with key jdbc:sqlserver:<propertyName> (generic — applies to every SQL Server connection)
or jdbc:sqlserver://host:port;databaseName=db.<propertyName> (specific — for one connection only).
JDBC URL Format¶
Examples:
jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb
jdbc:sqlserver://localhost:1433;databaseName=mydb;integratedSecurity=true
jdbc:sqlserver://myserver\SQLEXPRESS:1433;databaseName=mydb
Property reference¶
| Property | Typical value | Effect |
|---|---|---|
| Authentication | ||
authentication |
ActiveDirectoryIntegrated / ActiveDirectoryInteractive / ActiveDirectoryServicePrincipal / ActiveDirectoryManagedIdentity / SqlPassword |
Authentication mode (version 6.0+). ActiveDirectoryIntegrated = Microsoft Entra (Azure AD) with integrated Windows auth; ActiveDirectoryInteractive = browser-based interactive sign-in; ActiveDirectoryServicePrincipal = service principal (client ID in user, secret in password); SqlPassword = SQL login. Default is NotSpecified (plain SQL auth). Note: ActiveDirectoryPassword still works but is deprecated. Any non-NotSpecified value enables TLS by default. |
integratedSecurity |
true / false |
When true, authenticates using Windows credentials instead of a SQL user/password — you leave user and password empty and SQL Server signs you in as your current Windows account. This is purely an authentication mechanism (it has no effect on TLS / certificate trust — see the note below). With authenticationScheme=NativeAuthentication (default) the driver loads the native DLL mssql-jdbc_auth-<version>-<arch>.dll (Windows only, must be on java.library.path); with authenticationScheme=JavaKerberos no DLL is needed (pure-Java Kerberos, works cross-platform). Omit for SQL authentication. |
authenticationScheme |
NativeAuthentication / JavaKerberos / NTLM |
How integrated security is performed. NativeAuthentication (default) uses the Windows-only native DLL. JavaKerberos uses pure-Java Kerberos (requires a krb5.conf and a fully-qualified serverName). NTLM (version 7.4+) uses NTLM with the domain, user, and password properties. Only relevant when integratedSecurity=true. |
user |
username | SQL Server login username (for SQL authentication) or Azure AD UPN (for Azure AD modes). |
password |
password | SQL Server login password (for SQL authentication) or Azure AD password. |
| Encryption & Security | ||
encrypt |
true / false / strict |
Enables TLS/SSL encryption. true = encrypt (driver verifies cert if server has one); strict = encrypt and always verify certificate (fail if invalid). Recommended: strict for production. |
trustServerCertificate |
true / false |
If false (default), the driver validates the server's SSL certificate against the Java trust store. If true, all certificates are accepted — only for development environments. Not recommended for production. |
hostNameInCertificate |
hostname pattern | Expected hostname in the server's SSL certificate (e.g. *.database.windows.net). Verifies that the certificate matches the actual server you are connecting to. |
trustStore |
file path | Path to a Java keystore (.jks or .p12) containing trusted CA certificates. If omitted, the JRE's built-in cacerts is used. |
trustStorePassword |
keystore password | Password for the trust store (if trustStore is used). |
trustStoreType |
JKS / PKCS12 |
Type of the trust store. Default: JKS. Use PKCS12 for FIPS environments. |
clientCertificate |
file path | Path to the client certificate file for client certificate authentication. Supports PFX, PEM, DER, and CER formats. |
clientKey |
file path | Path to the private key file for PEM, DER, and CER client certificates. |
clientKeyPassword |
password | Password to access the clientKey file's private key. |
| Connection Timeouts | ||
loginTimeout |
seconds (0-65535) | Connection login timeout. Default: 30 (version 11.2+) or 15 (10.2 and earlier). 0 = use the system default. |
socketTimeout |
milliseconds | Socket read timeout. Default: 0 (infinite). |
| Performance & Buffering | ||
responseBuffering |
adaptive / full |
How the driver buffers result rows: adaptive (default) = buffer the minimum needed; full = read the entire result set into memory when the statement executes. |
selectMethod |
direct / cursor |
direct (default) = keep all result rows in client memory (fastest for processing all rows). cursor = create a server cursor keeping only a limited number of rows in client memory — use for very large result sets that don't fit in client memory. |
disableStatementPooling |
true / false |
Whether prepared-statement pooling is disabled. Default: true (pooling off). Set to false together with a non-zero statementPoolingCacheSize to enable pooling. |
statementPoolingCacheSize |
int | Size of the prepared-statement handle cache (version 6.4+). Default: 0 (pooling disabled). Set > 0 and disableStatementPooling=false to enable. |
useBulkCopyForBatchInsert |
true / false |
When true, uses SQL Server bulk copy API for fully-parameterized batch inserts — significantly faster for large inserts (version 9.2+). Default: false. |
| Other | ||
databaseName |
database name | Name of the database to connect to. Required. |
instanceName |
instance name | SQL Server named instance (for on-premises, e.g. SQLEXPRESS). |
portNumber |
port (1-65535) | Port number, default 1433. |
applicationName |
string (<=128 char) | Application name visible in SQL Profiler and SQL Server Management Studio activity logs. Default: Microsoft JDBC Driver for SQL Server. Set to Sui for easier tracking. |
sendTimeAsDatetime |
true / false |
When true (default), java.sql.Time values are sent to the server as SQL Server datetime; when false, they are sent as SQL Server time. |
queryTimeout |
seconds | Query execution timeout. Default: -1 (infinite). |
lockTimeout |
milliseconds | Lock timeout. Default: -1 (wait indefinitely); 0 = no wait. |
sslProtocol |
TLS / TLSv1.2 / TLSv1.1 / TLSv1 |
TLS protocol to use for the secure connection (version 6.4+). Default: TLS (negotiates the highest available). |
Examples¶
Generic — apply to every SQL Server connection:
jdbc:sqlserver.encrypt = strict
jdbc:sqlserver.trustServerCertificate = false
jdbc:sqlserver.applicationName = Sui
jdbc:sqlserver.disableStatementPooling = false
jdbc:sqlserver.statementPoolingCacheSize = 250
Specific — properties for one Azure SQL Server connection:
jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb.authentication = ActiveDirectoryPassword
jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb.encrypt = strict
SQL Server SSL / TLS Setup¶
Authentication vs. encryption — a common confusion.
integratedSecurity(Windows / Kerberos login) and TLS certificate trust are independent. Turning on integrated security does not make the driver trust the Windows certificate store, and unlike DB2 there is noWindows-ROOToption for the SQL Server driver. TLS certificate validation always goes through the Java trust store, following this search order:
- the file named by the
trustStoreproperty (or the JVM system propertyjavax.net.ssl.trustStore), then<java-home>/lib/security/jssecacerts, then<java-home>/lib/security/cacerts(the JRE's bundled CA list).So a public-CA certificate (e.g. Azure SQL's) is trusted out of the box because its root is already in
cacerts. A private / enterprise CA is not incacerts— you must either import it withkeytooland pointtrustStoreat that file, or (on Windows) bridge the OS store into Java with a customtrustManagerClass. Importing the one server certificate is by far the simpler route.
For on-premises SQL Server with SSL enabled:
- Enable encryption in the URL or JDBC Properties:
- Point to the SSL port (typically 1433 for cleartext, custom port for SSL):
- Trust the certificate — Use a Java keystore with imported certificates:
jdbc:sqlserver.trustStore = C:\path\to\truststore.jks
jdbc:sqlserver.trustStorePassword = keystorepassword
Note: The SQL Server JDBC driver uses
trustStore(nottrustStoreLocation— that is the DB2/JCC naming). SQL Server does not have a built-inWindows-ROOToption like DB2. If you need to trust an enterprise CA on Windows, import its certificate into a Java keystore usingkeytool, then pointtrustStoreat that file. Alternatively, set JVM system properties outside of Sui:-Djavax.net.ssl.trustStore=<path> -Djavax.net.ssl.trustStorePassword=<password>
- Verify hostname (optional but recommended):
Full SQL Server SSL example with Azure AD¶
A production-ready Azure SQL profile with encryption and Microsoft Entra (Azure AD) authentication:
jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb.authentication = ActiveDirectoryPassword
jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb.encrypt = strict
jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb.hostNameInCertificate = *.database.windows.net
jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb.applicationName = Sui
Combined with a URL of jdbc:sqlserver://myserver.database.windows.net:1433;databaseName=mydb and user credentials on the Connection tab.
Save and Cancel¶
Save performs the following in order:
1. Commits any in-progress cell edits in all three tabs.
2. Writes all SUI.CONN.ALIAS.N and SUI.CONN.<alias>.* keys to SuiConnProp.pro.
3. Writes driver JAR paths (SUI.CONN.<class>.LOC) and any custom driver entries
(SUI.CONN.CUSTDRV.N) to SuiConnProp.pro.
4. Writes the JDBC Properties table to SuiConnPref.pro.
5. Calls Sui.reloadDriverJars() so newly configured JARs take effect immediately.
6. Refreshes the URL combobox and driver list in the main Sui panel.
Cancel closes the dialog without writing anything to disk.
Migrating from Earlier Versions¶
If you have connection data from an older version of Sui, the Connection Manager migrates it automatically on first open:
Legacy connprop.pro¶
If SuiConnProp.pro has no entries but the old connprop.pro file is present, all
profiles are loaded from it and a message like:
3 connection(s) loaded from legacy connprop.pro. Click Save to migrate them.
…is shown. Click Save to write them to SuiConnProp.pro in the new format.
Old JDBC Resources list (SUI.JDBCURL.0.N)¶
URLs previously managed via the Manage All JARs… dialog are also imported. For each URL: - The driver is detected by matching the URL prefix against the built-in template list. - A short alias is derived from the URL (e.g. the database name segment). - The profile appears in the list without credentials — you will be prompted to review it.
A message like:
2 URL(s) loaded from the legacy JDBC Resources list. Set the alias and user credentials, then click Save.
…is shown. Fill in any missing details and click Save.
After saving, the old SUI.JDBCURL.0.N keys are erased from SuiConnProp.pro.
Workflow — First-time Setup¶
- Open File → Connection Manager….
- Click New.
- Type an Alias (e.g.
MyDatabase). - Select your Driver from the dropdown.
- Fill in Server, Port, and Database (or Project for BigQuery). Watch the URL field update automatically.
- Enter your User name.
- Switch to the Driver / JAR tab. If the Status shows ✘ Not loaded, click Browse JAR…, select the JAR, then click Reload JARs.
- Switch back to Connection and click Test Connection to verify.
- If the test is green, click Save.
Your new alias now appears in the URL combobox on the main Sui panel.
Storage¶
Connection profiles are stored in SuiConnProp.pro in the Sui home directory.
JDBC connection properties are stored in SuiConnPref.pro in the same location.
See SuiHome.md for the location of the Sui home directory on your system.
Tips¶
-
Multiple environments: Create separate profiles for development, test, and production with the same driver but different server/database names and aliases (e.g.
MyApp-Dev,MyApp-Test,MyApp-Prod). Switch between them instantly from the main panel URL combobox. -
Shared driver JARs: All profiles using the same driver class share one JAR path entry. Update the path once in the Driver/JAR tab and it applies to every profile.
-
Glob patterns for multi-JAR drivers: Some drivers (e.g. Oracle with
ojdbc11.jar -
orai18n.jar) require multiple JARs. EnterC:\drivers\oracle\*.jarin the JAR/Path column to load all of them at once. -
No restart needed: After adding a new driver JAR and clicking Reload JARs (or Save), the driver is available immediately. You do not need to restart Sui.
-
Passwords and Auto-login: If you want Sui to pre-fill the password on the main panel when you select a URL, tick Auto-login in the connection profile. Without it, the password field is always blank on startup and you type it manually each session — which is the safer default for shared or portable installations.