## Tcl8.6.0/Tk8.6.0 Documentation > TDBC Package C API, version 1.0.0 > Tdbc_Init

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tdbc_Init, Tdbc_MapSqlState, Tdbc_TokenizeSql — C procedures to facilitate writing TDBC drivers
  SYNOPSIS
  ARGUMENTS
  DESCRIPTION
  TOKENS
  SEE ALSO
  KEYWORDS
  COPYRIGHT

### NAME

Tdbc_Init, Tdbc_MapSqlState, Tdbc_TokenizeSql — C procedures to facilitate writing TDBC drivers

### SYNOPSIS

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

### 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

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

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

tdbc, tdbc::mapSqlState, tdbc::tokenize

### KEYWORDS

TDBC, SQL, database, tokenize

### COPYRIGHT

Copyright (c) 2009 by Kevin B. Kenny.
Copyright © 2009 by Kevin B. Kenny.