Index / Glossary

A | B | C | D | E | F | G | H | I | J | K | L | M
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
N | O | P | Q | R | S | T | U | V | W | X | Y | Z

C |  | Column
| A column is another name for field in a SQL table. It has a data type (Integer, Char, Money etc) and a name by which it is addressed. You specify the name of a column in a query (either DELETE, UPDATE, SELECT or INSERT)
D |  | data source
| A data source defines all informationen needed by ODBC to connect to a database. This includes the name of the driver to use (Postgres, mySQL etc.), the name of the user, his password, the server name on which the database resides and of course the name of the database. There are a lot more options available.
| Data Types

The following table show some ODBC data types and how the relate to standard C data types:

Type identifier | ODBC typedef | C typedef
--- | --- | ---
SQL_C_CHAR | SQLCHAR * | unsigned char *
SQL_C_SSHORT | SQLSMALLINT | short int
SQL_C_USHORT | SQLUSMALLINT | unsigned short int
SQL_C_SLONG | SQLINTEGER | long int
SQL_C_FLOAT | SQLREAL | float
SQL_C_DOUBLE | SQLDOUBLE, SQLFLOAT | double
SQL_C_BINARY | SQLCHAR * | unsigned char
SQL_C_TYPE_DATE | SQL_DATE_STRUCT | struct tagDATE_STRUCT { SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; } DATE_STRUCT;
SQL_C_TYPE_TIME | SQL_TIME_STRUCT | struct tagTIME_STRUCT { SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; } TIME_STRUCT;

You will need the type identifier in calls to SQLBindCol.

O |  | odbc.ini
| `/etc/odbc.ini` is the configuration file for system data sources. It contains information which will be needed when connecting to a database. It is modified by a graphical utility ODBCConfig.
R |  | Row
| A row is a set of columns in a query. For example in our table there are two users. Each user makes up a row in the table or in the result of our query.
S |  | SQLAllocHandle

allocates needed handles. `

    SQLRETURN
    SQLAllocHandle(SQLSMALLINT  HandleType,
                   SQLHANDLE    InputHandle,
                   SQLHANDLE   *OutputHandlePtr);

`

#### Arguments

##### HandleType

Defines the type of handle to be allocated by `SQLAllocHandle`. There are four possible values:

`SQL_HANDLE_ENV
SQL_HANDLE_DBC
SQL_HANDLE_STMT
SQL_HANDLE_DESC`

##### InputHandle

This is the input handle in whose context the new handle will be allocated. If `HandleType` is `SQL_HANDLE_ENV`, this is `SQL_NULL_HANDLE`. For a handle of type `SQL_HANDLE_DBC`, this has to be an environment handle, and if it is `SQL_HANDLE_STMT` or `SQL_HANDLE_DESC`, it must be a connection handle.

##### OutputHandlePtr

Pointer to a buffer in which to return the allocated handle.

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE,` or `SQL_ERROR`.

| SQLBindCol

binds a variable to a column in the result. `

    SQLRETURN
    SQLBindCol(SQLHSTMT      StatementHandle,
               SQLUSMALLINT  ColumnNumber,
               SQLSMALLINT   TargetType,
               SQLPOINTER    TargetValuePtr,
               SQLINTEGER    BufferLength,
               SQLINTEGER   *StrLen_or_IndPtr);

`

#### Arguments

##### StatementHandle

`StatementHandle` must have been allocated by `SQLAllocHandle` and will hold all information and the result set of the statement.

##### ColumnNumber

Number of the column in the result set. Starts with 1.

##### TargetType

Type identifier of the data type

##### TargetValuePtr

The pointer to the variable in which the data will be stored.

##### BufferLength

The size of the buffer `TargetValuePtr` points at in bytes.

##### StrLen_or_IndPtr

When data is fetched, returns either

- The length of the data available to return
- SQL_NO_TOTAL
- SQL_NULL_DATA

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR` or `SQL_INVALID_HANDLE`.

| SQLConnect

connects to a datasource `

    SQLRETURN SQLConnect(SQLHDBC     ConnectionHandle,
                         SQLCHAR    *ServerName,
                         SQLSMALLINT NameLength1,
                         SQLCHAR    *UserName,
                         SQLSMALLINT NameLength2,
                         SQLCHAR    *Authentication,
                         SQLSMALLINT NameLength3);

`

#### Arguments

##### ConnectionHandle

`ConnectionHandle` must have been allocated by `SQLAllocHandle` and will hold all information about the connection.

##### ServerName

Name of the database server

##### NameLength1

The length of `ServerName` or `SQL_NTS`

##### UserName

The name of the user who connects to the database.

##### NameLength2

The length of `UserName` or `SQL_NTS`

##### Authentication

Password of the user

##### NameLength3

The length of `Authentication` or `SQL_NTS`

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR` or `SQL_INVALID_HANDLE`.

| SQLDataSources

fetches avaible datasource names either user, system or both. `

    SQLRETURN
    SQLDataSources(SQLHENV      EnvironmentHandle,
                   SQLUSMALLINT Direction,
                   SQLCHAR     *ServerName,
                   SQLSMALLINT  BufferLength1,
                   SQLSMALLINT *NameLength1Ptr,
                   SQLCHAR     *Description,
                   SQLSMALLINT  BufferLength2,
                   SQLSMALLINT *NameLength2Ptr);

`

#### Arguments

##### EnvironmentHandle

`EnvironmentHandle` must have been allocated by `SQLAllocHandle`.

##### Direction

Which DSN we are looking for. May be on of:

`SQL_FETCH_FIRST` | Sets up `SQLDataSources()` to lookup the first of all available datasources (either user or systemwide).
`SQL_FETCH_FIRST_USER` | Sets up `SQLDataSources()` to lookup the first of the available user datasources.
`SQL_FETCH_FIRST_SYSTEM` | Sets up `SQLDataSources()` to lookup the first of the available system datasources.
`SQL_FETCH_NEXT` | Fetches the next datasource. Depending on `SQL_FETCH_FIRST_USER`, `SQL_FETCH_FIRST_SYSTEM` or `SQL_FETCH_FIRST` this may only be a user datasource, only a system datasource or one of either.

##### ServerName

The name of the datasource is returned herein.

##### BufferLength1

Defines how many chars Servername may contain at most.

##### NameLength1Ptr

The pointer to the variable in which the actual length of the datasource name is stored. If NameLength1Ptr is greater than BufferLength1, then the DSN in ServerName is truncated to fit.

##### BufferLength

The size of the buffer `TargetValuePtr` points at in bytes.

##### Description

The description supplied with the datasource, giving more information on the datasource in human readable form.

##### BufferLength2

Defines how many chars Description may contain at most.

##### NameLength2Ptr

The pointer to the variable in which the actual length of the description is stored. If NameLength2Ptr is greater than BufferLength2, then the description in Description is truncated to fit.

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR`, `SQL_NO_DATA>` or `SQL_INVALID_HANDLE`.

| SQLExecDirect

Executes a SQL statement `

    SQLRETURN SQLExecDirect(SQLHSTMT    StatementHandle,
                            SQLCHAR    *StatementText,
                            SQLINTEGER  TextLength);

`

#### Arguments

##### StatementHandle

`StatementHandle` must have been allocated by `SQLAllocHandle` and will hold all information and the result set of the statement.

##### StatementText

The SQL statement to be executed

##### TextLength

The length of `StatementText` or `SQL_NTS`

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR` or `SQL_INVALID_HANDLE`.

| SQLDisconnect

disconnects the specified connection `

    SQLRETURN SQLDisconnect(SQLHDBC     ConnectionHandle);

`

#### Arguments

##### ConnectionHandle

The handle of the connection to be closed.

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE,` or `SQL_ERROR`.

| SQLFetch

Fetches the next row of the result set. `

    SQLRETURN SQLFetch(SQLHDBC     StatementHandle);

`

#### Arguments

##### StatementHandle

The handle of the statement to be closed fromwhich the data should be fetched.

#### Returns

`SQL_SUCCESS, SQL_NO_DATA, SQL_STILL_EXECUTING, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE,` or `SQL_ERROR`.

| SQLFreeHandle

frees allocated handles. `

    SQLRETURN SQLFreeHandle(SQLSMALLINT  HandleType,
                            SQLHANDLE    InputHandle);

`

#### Arguments

##### HandleType

Defines the type of handle to be freed. There are four possible values:

`SQL_HANDLE_ENV
SQL_HANDLE_DBC
SQL_HANDLE_STMT
SQL_HANDLE_DESC`

##### InputHandle

The handle to be freed. Should match the type stated by `HandleType`

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE,` or `SQL_ERROR`.

| SQLNumResultCols

returns the number of columns in the result set. `

    SQLRETURN SQLNumResultCols(SQLHSTMT     StatementHandle,
                               SQLSMALLINT *ColumnCountPtr);

`

#### Arguments

##### StatementHandle

`StatementHandle` must have been allocated by `SQLAllocHandle` and holds all information and the result set of the statement.

##### ColumnCountPtr

A pointer to a variable to hold the result value.

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_INVALID_HANDLE,` or `SQL_ERROR`.

| SQLRowCount

returns the number of rows affected by INSERT, UPDATE or DELETE. Many drivers (but not all) return the number of rows returned by the last executed SELECT statement too. `

    SQLRETURN SQLSQLRowCount(SQLHSTMT     StatementHandle,
                             SQLSMALLINT *RowCountPtr);

`

#### Arguments

##### StatementHandle

`StatementHandle` must have been allocated by `SQLAllocHandle` and holds all information and the result set of the statement.

##### RowCountPtr

A pointer to a variable to hold the result value.

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_INVALID_HANDLE,` or `SQL_ERROR`.

| SQLSetConnectAttr

modifies attributes of connections. `

    SQLRETURN SQLSetConnectAttr(SQLHDBC    ConnectionHandle,
                                SQLINTEGER Attribute,
                                SQLPOINTER ValuePtr,
                                SQLINTEGER StringLength);

`

#### Arguments

##### ConnectionHandle

`ConnectionHandle` must have been allocated by `SQLAllocHandle` and defines the connection which will be modified.

##### Attribute

which attribute to set

##### ValuePtr

Pointer to the value for `Attribute`. Depending on `Attribute`, `ValuePtr` will be a 32-bit integer value or a pointer to a null-terminated string.

##### StringLength

If `ValuePtr` points to a character string or a binary buffer, this argument should be the length of `*ValuePtr`. Otherwise, for `ValuePtr` of type integer `StringLength` is ignored.

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR` or `SQL_INVALID_HANDLE`.

| SQLSetEnvAttr

sets attributes of environments. `

    SQLRETURN  SQLSetEnvAttr(SQLHENV    EnvironmentHandle,
                             SQLINTEGER Attribute,
                             SQLPOINTER ValuePtr,
                             SQLINTEGER StringLength);

`

#### Arguments

##### EnvironmentHandle

`EnvironmentHandle` must have been allocated by `SQLAllocHandle`

##### Attribute

which attribute to set

##### ValuePtr

Pointer to the value for `Attribute`. Depending on `Attribute`, `ValuePtr` will be a 32-bit integer value or a pointer to a null-terminated string.

##### StringLength

If `ValuePtr` points to a character string or a binary buffer, this argument should be the length of `*ValuePtr`. Otherwise, for `ValuePtr` of type integer `StringLength` is ignored.

#### Returns

`SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR` or `SQL_INVALID_HANDLE`.