Tdbc\_Init(3) Tcl Database Connectivity Tdbc\_Init(3)

```

```

# [NAME](#NAME)

Tdbc\_Init, Tdbc\_MapSqlState, Tdbc\_TokenizeSql - C procedures to facilitate writing TDBC drivers

# [SYNOPSIS](#SYNOPSIS)

```
#include <tdbc.h>
int
Tdbc_Init(interp)
Tcl_Obj *
Tdbc_TokenizeSql(interp, sqlcode)
const char *
Tdbc_MapSqlState(state)
```

# [ARGUMENTS](#ARGUMENTS)

Tcl\_Interp *\*interp* (in/out)

Pointer to a Tcl interpreter.

const char *\*state* (in)

Pointer to a character string containing a 'SQL state' from a database error.

const char *\*sqlcode* (in)

Pointer to a character string containing a SQL statement.

```
    
```

# [DESCRIPTION](#DESCRIPTION)

The TDBC library provides several C procedures that simplify writing a TDBC driver. They include a procedure that tokenizes a SQL statement, locating variables to be substituted, and a procedure that accepts a SQL state and returns an error class for the interpreter error information.

**Tdbc\_Init** must be invoked prior to any other TDBC call. It accepts a pointer to a Tcl interpreter, and arranges to load the TDBC library. It returns **TCL\_OK** if the Tcl library was loaded successfully, and **TCL\_ERROR** otherwise. If **TCL\_ERROR** is returned, the interpreter's result contains the error message.

**Tdbc\_TokenizeSql** accepts a pointer to a Tcl interpreter, and a pointer to a character string containing one or more SQL statements. It tokenizes the SQL statements, and returns a pointer to a Tcl\_Obj that contains a list of the tokens that make up the statement. Concatenating the tokens together will yield the original SQL code. The returned Tcl\_Obj has a reference count of zero. The caller is responsible for managing the reference count as needed. See **TOKENS** below for a description of what may be in the returned list of tokens.

**Tdbc\_MapSqlState** accepts a pointer to a string, usually five characters long, that is the 'SQL state' that resulted from a database error. It returns a character string that is suitable for inclusion as the error class when constructing the error code for an error in a TDBC driver. (By convention, the error code is a list having at least four elements: "**TDBC** *errorClass* *sqlstate* *driverName* *details...*".)

# [TOKENS](#TOKENS)

Each token returned from **Tdbc\_TokenizeSql** may be one of the following:

\[1]

A bound variable, which begins with one of the characters '**:**', '**@**', or '**$**'. The remainder of the string is the variable name and will consist of alphanumeric characters and underscores. (The leading character will be be non-numeric.)

\[2]

A semicolon that separates two SQL statements.

\[3]

Something else in a SQL statement. The tokenizer does not attempt to parse SQL; it merely identifies bound variables (distinguishing them from similar strings appearing inside quotes or comments) and statement delimiters.

# [SEE ALSO](#SEE_ALSO)

[tdbc(n)](/man/os/tcl/tdbc.n), [tdbc::mapSqlState(n)](/man/os/tcl/tdbc::mapSqlState.n), [tdbc::tokenize(n)](/man/os/tcl/tdbc::tokenize.n)

# [KEYWORDS](#KEYWORDS)

TDBC, SQL, database, tokenize

# [COPYRIGHT](#COPYRIGHT)

Copyright (c) 2009 by Kevin B. Kenny.

8.6 Tcl

---

Document: Tdbc_Init(3) from tcl 9.1.0-r1 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/tcl/Tcl/9.1.0/tcl9.1.0-src.tar.gz
