Using the Caché SQL Gateway with JDBC
The Caché SQL Gateway allows Caché to access external databases via both JDBC and ODBC. This chapter contains the SQL Gateway information concerning JDBC connections. For a detailed description of the SQL Gateway, see the chapter on Using the Caché SQL Gateway in Using Caché SQL.
Creating JDBC SQL Gateway Connections for External Sources
This section describes how to create a JDBC logical connection definition for the SQL Gateway.
Caché maintains a list of SQL Gateway connection definitions, which are logical names for connections to external data sources. Each connection definition consists of a logical name (for use within Caché), information on connecting to the data source, and a username and password to use when establishing the connection. These connections are stored in the table %Library.sys_SQLConnection. You can export data from this table and import it into another Caché instance.
To monitor SQL Gateway problems, you can enable SQL Gateway logging (see “Enabling Logging for the SQL Gateway”). You can specify the version of Java to be used with the SQL Gateway by setting the Caché JavaHome parameter (see JavaHome in the Caché Parameter File Reference).
Creating a JDBC SQL Gateway Connection
To define a gateway connection for a JDBC-compliant data source, perform the following steps:
-
In the Management Portal, go to the System Administration > Connectivity > SQL Gateway Connections page.
-
Click Create New Connection.
-
On the Gateway Connection page, enter or choose values for the following fields:
-
For Type, choose JDBC.
-
Connection Name — Specify an identifier for the connection, for use within Caché.
-
User — Specify the name for the account to serve as the default for establishing connections, if needed.
-
Password — Specify the password associated with the default account.
-
Driver name — Full class name of the JDBC client driver.
-
URL — Connection URL for the data source, in the format required by the JDBC client driver that you are using.
-
Class path — Specifies a comma-separated list of additional JAR files to load.
-
Properties — Optional string that specifies vendor-specific connection properties. If specified, this string should be of the following form:
property=value;property=value;...
See Caché JDBC Connection Properties for more information on connection properties.
For example, a typical connection might use the following values:
Setting Value Type JDBC Connection Name ConnectionJDBC1 User JDBCUser Password JDBCPassword Driver name oracle.jdbc.driver.OracleDriver URL jdbc:oracle:thin:@//oraserver:1521/SID Class path /fill/path/to/ojdbc14.jar Properties oracle.jdbc.V8Compatibility=true; includeSynonyms=false;restrictGetTables=true For the other options, see “Implementation-specific Options.”
-
-
Optionally test if the values are valid. To do so, click the Test Connection button. The screen will display a message indicating whether the values you have entered allow for a valid connection.
-
To create the named connection, click Save.
-
Click Close.
Creating a JDBC Connection to Caché via the SQL Gateway
Caché provides JDBC drivers and can be used as a JDBC data source. That is, a Caché instance can connect to itself or to another Caché instance via JDBC and the SQL Gateway. Specifically, the connection is from a namespace in one Caché to a namespace in the other Caché. To connect in this way, you need the same information that you need for any other external database: the connection details for the database driver that you want to use. This section provides the basic information.
Connecting to Caché as a JDBC Data Source
To configure a Caché instance (Caché-1) to use another Caché instance (Caché-2) as a JDBC data source, do the following:
-
Within Caché-1, use the SQL Gateway to create a JDBC connection to the namespace in Caché-2 that you want to use.
-
For Type, choose JDBC.
-
Connection Name — Specify an identifier for the connection, for use within Caché-1.
-
User — Specify the username needed to access Caché-2, if needed.
-
Password — Specify the password for this user.
-
Driver name — Use com.intersys.jdbc.CacheDriver
-
URL — Connection URL for the data source, in the following format:
jdbc:Cache://IP_address:port/namespace
Here IP_address:port is the IP address and TCP port where Caché-2 is running, and namespace is the namespace to which you want to connect (see Defining a JDBC Connection URL).
For example, a typical connection might use the following values:
Setting Value Type JDBC Connection Name Cache2Samples User _SYSTEM Password SYS Driver name com.intersys.jdbc.CacheDriver URL jdbc:Cache://127.0.0.1:1972/SAMPLES -
Class path — Leave this blank.
-
Properties — Optional string that specifies connection properties supported by the Caché JDBC drivers. If specified, this string should be of the following form:
property=value;property=value;...
-
Conversion in composite Row IDs — The default option should be suitable in most cases, but you can choose any option. The details are given in “Implementation-specific Options.”
-
Do not use delimited identifiers by default — The default (not to click this check box) should be suitable in most cases, but you can enable this option if desired. The details are given in “Implementation-specific Options.”
-
-
Click Save.
-
Click Close.
Implementation-specific Options
Before you define an SQL gateway connection, you should make sure that you understand the requirements of the external database and of the database driver, because these requirements affect how you define the connection.
The Do not use delimited identifiers by default option controls the format of identifiers in the generated routines.
Select this check box if you are using a database that does not support delimited SQL identifiers. This currently includes the following databases:
-
Sybase
-
Informix
-
MS SQL Server
Clear the check box if you are using any other database. All SQL identifiers will be delimited.
The Use COALESCE option controls how a query is handled when it includes a parameter (?), and it has an effect only when a query parameter equals null.
-
If you do not select Use COALESCE and if a query parameter equals null, the query returns only records that have null for the corresponding value. For example, consider a query of the following form:
SELECT ID, Name from LinkedTables.Table WHERE Name %STARTSWITH ?
If the provided parameter is null, the query would return only rows with null-valued names.
-
If you select Use COALESCE, the query wraps each parameter within a COALESCE function call, which controls how null values are handled.
Then, if a query parameter equals null, the query essentially treats the parameter as a wildcard. In the previous example, if the provided parameter is null, this query returns all rows.
Whether you select this option depends on your preferences and on whether the external database supports the COALESCE function.
To find out whether the external database supports the COALESCE function, consult the documentation for that database.
The Conversion in composite Row IDs option controls how non-character values are treated when forming a composite ID. Choose an option that is supported by your database:
-
Do not convert non-character values — This option performs no conversion. This option is suitable only if your database supports concatenating non-character values to character values.
-
Use CAST — This option uses CAST to convert non-character values to character values.
-
Use {fn convert ...} — This option uses {fn convert ...} to convert non-character values to character values.
In all cases, the IDs are concatenated with || between the IDs (or transformed IDs).
Consult the documentation for the external database to find out which option or options it supports.