Transiciones de conexión
Las conexiones ODBC tienen los siguientes estados.
Estado | Descripción |
---|---|
C0 | Entorno sin asignar, conexión sin asignar |
C1 | Entorno asignado, conexión sin asignar |
C2 | Entorno asignado, conexión asignada |
C3 | La función connection necesita datos |
C4 | Conexión conectada |
C5 | Conexión conectada, instrucción asignada |
C6 | Conexión conectada, transacción en curso. Es posible que una conexión esté en el estado C6 sin instrucciones asignadas en la conexión. Por ejemplo, supongamos que la conexión está en modo de confirmación manual y está en el estado C4. Si se asigna una instrucción, se ejecuta (iniciando una transacción) y, a continuación, se libera, la transacción permanece activa, pero no hay instrucciones en la conexión. |
En las tablas siguientes se muestra cómo afecta cada función ODBC al estado de conexión.
SQLAllocHandle
C0 Sin Env. |
C1 Sin asignar | C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
C1[1] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
(IH)[2] | C2 | --[5] | --[5] | --[5] | --[5] | --[5] |
(IH)[3] | (IH) | (08003) | (08003) | C5 | --[5] | --[5] |
(IH)[4] | (IH) | (08003) | (08003) | --[5] | --[5] | --[5] |
[1] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_ENV.
[2] Esta fila muestra las transiciones cuando handleType se SQL_HANDLE_DBC.
[3] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_STMT.
[4] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_DESC.
[5] Llamar a SQLAllocHandle con OutputHandlePtr apuntando a un identificador válido sobrescribe los sobrescrituras que controlan sin tener en cuenta el contenido anterior de ese identificador y pueden causar problemas para los controladores ODBC. Es incorrecto programar aplicaciones ODBC para llamar a SQLAllocHandle dos veces con la misma variable de aplicación definida para *OutputHandlePtr sin llamar a SQLFreeHandle para liberar el identificador antes de reasignarlo. Sobrescribir los identificadores ODBC de tal manera puede provocar un comportamiento o errores incoherentes en la parte de los controladores ODBC.
SQLBrowseConnect
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | C3 [d] C4 [s] | -- [d] C2 [e] C4 [s] | (08002) | (08002) | (08002) |
SQLCloseCursor
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | --[1] C5[2] |
[1] La conexión estaba en modo de confirmación manual.
[2] La conexión estaba en modo de confirmación automática.
SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges y SQLTables
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] La conexión estaba en modo de confirmación automática o el origen de datos no comenzó una transacción.
[2] La conexión estaba en modo de confirmación manual y el origen de datos inició una transacción.
SQLConnect
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 | (08002) | (08002) | (08002) | (08002) |
SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField y SQLSetDescRec
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | --[1] | -- | -- |
[1] En este estado, los únicos descriptores disponibles para la aplicación son descriptores asignados explícitamente.
SQLDataSources y SQLDrivers
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | -- | -- | -- | -- | -- | -- |
SQLDisconnect
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | C2 | C2 | C2 | 25000 |
SQLDriverConnect
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 s -- n[f] | (08002) | (08002) | (08002) | (08002) |
SQLEndTran
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH)[1] | --[3] | --[3] | --[3] | -- | -- | --[4] o ([5], [6], y [8]) C4[5] y [7] C5[5], [6], y [9] |
(IH)[2] | (IH) | (08003) | (08003) | -- | -- | C5 |
[1] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_ENV.
[2] Esta fila muestra las transiciones cuando handleType se SQL_HANDLE_DBC.
[3] Dado que la conexión no está en un estado conectado, no se ve afectada por la transacción.
[4] Error de confirmación o reversión en la conexión. La función devuelve SQL_ERROR en este caso.
[5] La confirmación o reversión se realizó correctamente en la conexión. La función devuelve SQL_ERROR si se produjo un error de confirmación o reversión en otra conexión, o la función devuelve SQL_SUCCESS si la confirmación o reversión se realizó correctamente en todas las conexiones.
[6] Había al menos una instrucción asignada en la conexión.
[7] No se asignaron instrucciones en la conexión.
[8] La conexión tenía al menos una instrucción para la que había un cursor abierto y el origen de datos conserva los cursores cuando las transacciones se confirman o se revierten, lo que se aplica (en función de si CompletionType se SQL_COMMIT o SQL_ROLLBACK). Para obtener más información, consulte los atributos SQL_CURSOR_COMMIT_BEHAVIOR y SQL_CURSOR_ROLLBACK_BEHAVIOR en SQLGetInfo.
[9] Si la conexión tenía instrucciones para las que había cursores abiertos, los cursores no se conservaron cuando la transacción se confirmó o reviertó.
SQLExecDirect y SQLExecute
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] C6[3] | -- |
[1] La conexión estaba en modo de confirmación automática y la instrucción ejecutada no era una especificación de cursor (como una instrucción SELECT); o la conexión estaba en modo de confirmación manual y la instrucción ejecutada no iniciaba una transacción.
[2] La conexión estaba en modo de confirmación automática y la instrucción ejecutada era una especificación de cursor (como una instrucción SELECT).
[3] La conexión estaba en modo de confirmación manual y el origen de datos inició una transacción.
SQLFreeHandle
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH)[1] | C0 | (HY010) | (HY010) | (HY010) | (HY010) | (HY010) |
(IH)[2] | (IH) | (C1) | (HY010) | (HY010) | (HY010) | (HY010) |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | C4[5] --[6] | --[7] C4[5] y [8] C5[6] y [8] |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_ENV.
[2] Esta fila muestra las transiciones cuando handleType se SQL_HANDLE_DBC.
[3] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_STMT.
[4] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_DESC.
[5] Solo había una instrucción asignada en la conexión.
[6] Había varias instrucciones asignadas en la conexión.
[7] La conexión estaba en modo de confirmación manual.
[8] La conexión estaba en modo de confirmación automática.
SQLFreeStmt
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH)[1] | (IH) | (IH) | (IH) | (IH) | -- | C5[3] --[4] |
(IH)[2] | (IH) | (IH) | (IH) | (IH) | -- | -- |
[1] Esta fila muestra las transacciones cuando se SQL_CLOSE el argumento Option .
[2] Esta fila muestra las transacciones cuando el argumento Option es SQL_UNBIND o SQL_RESET_PARAMS.
[3] La conexión estaba en modo de confirmación automática y no había cursores abiertos en ninguna instrucción excepto esta.
[4] La conexión estaba en modo de confirmación manual o estaba en modo de confirmación automática y un cursor estaba abierto en al menos una instrucción.
SQLGetConnectAttr
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | -- | -- | -- |
[1] El argumento Attribute se SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE o SQL_ATTR_TRACEFILE, o se había establecido un valor para el atributo de conexión.
[2] El argumento Attribute no se SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE o SQL_ATTR_TRACEFILE, y no se había establecido un valor para el atributo de conexión.
SQLGetDiagField y SQLGetDiagRec
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH)[1] | -- | -- | -- | -- | -- | -- |
(IH)[2] | (IH) | -- | -- | -- | -- | -- |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | -- | -- |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_ENV.
[2] Esta fila muestra las transiciones cuando handleType se SQL_HANDLE_DBC.
[3] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_STMT.
[4] Esta fila muestra las transiciones cuando HandleType se SQL_HANDLE_DESC.
SQLGetEnvAttr
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | -- | -- |
SQLGetFunctions
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
IH | IH | HY010 | HY010 | -- | -- | -- |
SQLGetInfo
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | 08003 | -- | -- | -- |
[1] El argumento InfoType se SQL_ODBC_VER.
[2] El argumento InfoType no se SQL_ODBC_VER.
SQLMoreResults
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | --[3] C5[1] |
[1] La conexión estaba en modo de confirmación automática y la llamada a SQLMoreResults no ha inicializado el procesamiento de un conjunto de resultados de una especificación de cursor.
[2] La conexión estaba en modo de confirmación automática y la llamada a SQLMoreResults ha inicializado el procesamiento de un conjunto de resultados de una especificación de cursor.
[3] La conexión estaba en modo de confirmación manual.
SQLNativeSql
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | (08003) | -- | -- | -- |
SQLPrepare
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] La conexión estaba en modo de confirmación automática o el origen de datos no comenzó una transacción.
[2] La conexión estaba en modo de confirmación manual y el origen de datos inició una transacción.
SQLSetConnectAttr
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | --[3] 08002[4] HY011[5] | --[3] 08002[4] HY011[5] | --[3] y [6] C5[8] 08002[4] HY011[5] o [7] |
[1] El argumento Attribute no se SQL_ATTR_TRANSLATE_LIB ni SQL_ATTR_TRANSLATE_OPTION.
[2] El argumento Attribute se SQL_ATTR_TRANSLATE_LIB o SQL_ATTR_TRANSLATE_OPTION.
[3] El argumento Attribute no se SQL_ATTR_ODBC_CURSORS ni SQL_ATTR_PACKET_SIZE.
[4] El argumento Attribute se SQL_ATTR_ODBC_CURSORS.
[5] El argumento Attribute se SQL_ATTR_PACKET_SIZE.
[6] El argumento Attribute no se SQL_ATTR_AUTOCOMMIT, o el argumento Attribute se SQL_ATTR_AUTOCOMMIT y establecer este atributo no confirmó la transacción.
[7] El argumento Attribute se SQL_ATTR_TXN_ISOLATION.
[8] El argumento Attribute se SQL_ATTR_AUTOCOMMIT y el establecimiento de este atributo confirmó la transacción.
SQLSetEnvAttr
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | -- | -- | (HY010) | -- | -- | -- |
Todas las demás funciones ODBC
C0 Sin Env. |
C1 Sin asignar |
C2 Asignado |
C3 Necesidad de datos |
C4 Conectado |
C5 Instrucción |
C6 Transacción |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | -- |