# DB2 Backend Reference

SOCI backend for accessing IBM DB2 database.

## Prerequisites

### Supported Versions

See Tested Platforms.

### Tested Platforms

DB2 | OS | Compiler
--- | --- | ---
- | Linux PPC64 | GCC
9.1 | Linux | GCC
9.5 | Linux | GCC
9.7 | Linux | GCC
10.1 | Linux | GCC
10.1 | Windows 8 | Visual Studio 2012
10.5.0.5 | macOS High Sierra 10.13.5 | AppleClang 9.1.0.9020039

### Required Client Libraries

The SOCI DB2 backend requires client library from the IBM Data Server Driver Package (DS Driver).

## Connecting to the Database

On Unix, before using the DB2 backend please make sure, that you have sourced DB2 profile into your environment:

    . ~/db2inst1/sqllib/db2profile

To establish a connection to the DB2 database, create a session object using the DB2 backend factory together with the database file name:

    soci::session sql(soci::db2, "your DB2 connection string here");

## SOCI Feature Support

### Dynamic Binding

TODO

### Bulk Operations

Supported, but with caution as it hasn't been extensively tested.

### Transactions

Currently, not supported.

### BLOB Data Type

Currently, not supported.

### Nested Statements

Nesting statements are not processed by SOCI in any special way and they work as implemented by the DB2 database.

### Stored Procedures

Stored procedures are supported, with `CALL` statement.

## Native API Access

TODO

## Backend-specific extensions

None.

## Configuration options

This backend supports `db2_option_driver_complete` option which can be passed to it via `connection_parameters` class. The value of this option is passed to `SQLDriverConnect()` function as "driver completion" parameter and so must be one of `SQL_DRIVER_XXX` values, in the string form. The default value of this option is `SQL_DRIVER_PROMPT` meaning that the driver will query the user for the user name and/or the password if they are not stored together with the connection. If this is undesirable for some reason, you can use `SQL_DRIVER_NOPROMPT` value for this option to suppress showing the message box:

    connection_parameters parameters("db2", "DSN=sample");
    parameters.set_option(db2_option_driver_complete, "0" /* SQL_DRIVER_NOPROMPT */);
    session sql(parameters);

Note, `db2_option_driver_complete` controls driver completion specific to the IBM DB2 driver for ODBC and CLI.

#### Search

From here you can search these documents. Enter your search terms below.

#### Keyboard Shortcuts

Keys | Action
--- | ---
`?` | Open this help
`n` | Next page
`p` | Previous page
`s` | Search