/* 
http://www.sqlexpress.net/ErrCodes.htm
ODBC Error Codes 

ODBC error codes are returned as SQLSTATE values as defined by X/Open Data Management: 
Structured Query Language (SQL), Version 2 (March 1995). SQLSTATE values are strings 
that contain five characters. 
The following table lists SQLSTATE values that can be returned by a driver.

The character string value returned for an SQLSTATE consists of a two-character class value 
followed by a three-character subclass value. A class value of "01" indicates a warning and 
is accompanied by a return code of SQL_SUCCESS_WITH_INFO. Class values other than "01," 
except for the class "IM," indicate an error and are accompanied by a return value of SQL_ERROR. 
The class "IM" is specific to warnings and errors that derive from the implementation of ODBC itself. 
The subclass value "000" in any class indicates that there is no subclass for that SQLSTATE. 
The assignment of class and subclass values is defined by SQL92.

01000 General warning 
01001 Cursor operation conflict 
01002 Disconnect error 
01003 NULL value eliminated in set function 
01004 String data, right-truncated 
01006 Privilege not revoked 
01007 Privilege not granted 
01S00 Invalid connection string attribute 
01S01 Error in row 
01S02 Option value changed 
01S06 Attempt to fetch before the result set returned the first rowset 
01S07 Fractional truncation 
01S08 Error saving File DSN 
01S09 Invalid keyword 
07001 Wrong number of parameters 
07002 COUNT field incorrect 
07005 Prepared statement not a cursor-specification 
07006 Restricted data type attribute violation 
07009 Invalid descriptor index 
07S01 Invalid use of default parameter 
08001 Client unable to establish connection 
08002 Connection name in use 
08003 Connection does not exist 
08004 Server rejected the connection 
08007 Connection failure during transaction 
08S01 Communication link failure 
21S01 Insert value list does not match column list 
21S02 Degree of derived table does not match column list 
22001 String data, right-truncated 
22002 Indicator variable required but not supplied 
22003 Numeric value out of range 
22007 Invalid datetime format 
22008 Datetime field overflow 
22012 Division by zero 
22015 Interval field overflow 
22018 Invalid character value for cast specification 
22019 Invalid escape character 
22025 Invalid escape sequence 
22026 String data, length mismatch 
23000 Integrity constraint violation 
24000 Invalid cursor state 
25000 Invalid transaction state 
25S01 Transaction state 
25S02 Transaction is still active 
25S03 Transaction is rolled back 
28000 Invalid authorization specification 
34000 Invalid cursor name 
3C000 Duplicate cursor name 
3D000 Invalid catalog name 
3F000 Invalid schema name 
40001 Serialization failure 
40002 Integrity constraint violation 
40003 Statement completion unknown 
42000 Syntax error or access violation 
42S01 Base table or view already exists 
42S02 Base table or view not found 
42S11 Index already exists 
42S12 Index not found 
42S21 Column already exists 
42S22 Column not found 
44000 WITH CHECK OPTION violation 
HY000 General error 
HY001 Memory allocation error 
HY003 Invalid application buffer type 
HY004 Invalid SQL data type 
HY007 Associated statement is not prepared 
HY008 Operation canceled 
HY009 Invalid use of null pointer 
HY010 Function sequence error 
HY011 Attribute cannot be set now 
HY012 Invalid transaction operation code 
HY013 Memory management error 
HY014 Limit on the number of handles exceeded 
HY015 No cursor name available 
HY016 Cannot modify an implementation row descriptor 
HY017 Invalid use of an automatically allocated descriptor handle 
HY018 Server declined cancel request 
HY019 Non-character and non-binary data sent in pieces 
HY020 Attempt to concatenate a null value 
HY021 Inconsistent descriptor information 
HY024 Invalid attribute value 
HY090 Invalid string or buffer length 
HY091 Invalid descriptor field identifier 
HY092 Invalid attribute/option identifier 
HY095 Function type out of range 
HY096 Invalid information type 
HY097 Column type out of range 
HY098 Scope type out of range 
HY099 Nullable type out of range 
HY100 Uniqueness option type out of range 
HY101 Accuracy option type out of range 
HY103 Invalid retrieval code 
HY104 Invalid precision or scale value 
HY105 Invalid parameter type 
HY106 Fetch type out of range 
HY107 Row value out of range 
HY109 Invalid cursor position 
HY110 Invalid driver completion 
HY111 Invalid bookmark value 
HYC00 Optional feature not implemented 
HYT00 Timeout expired 
HYT01 Connection timeout expired 
IM001 Driver does not support this function 
IM002 Data source name not found and no default driver specified 
IM003 Specified driver could not be loaded 
IM004 Driver failed to allocate environment handle 
IM005 Driver failed to allocate connection handle 
IM006 Driver failed to set connection attribute 
IM007 No data source or driver specified; dialog prohibited 
IM008 Dialog failed 
IM009 Unable to load translation DLL 
IM010 Data source name too long 
IM011 Driver name too long 
IM012 DRIVER keyword syntax error 
IM013 Trace file error 
IM014 Invalid name of File DSN 
IM015 Corrupt file data source 
*/