ODBC 应用程序调用 SQLSetConnectAttr,调用时将 Attribute 设置为 SQL_ATTR_TXN_ISOLATION 并根据相应隔离级别设置 ValuePtr:
ValuePtr | 隔离级别 |
---|---|
SQL_TXN_READ_UNCOMMITTED | 0 |
SQL_TXN_READ_COMMITTED | 1 |
SQL_TXN_REPEATABLE_READ | 2 |
SQL_TXN_SERIALIZABLE | 3 |
SA_SQL_TXN_SNAPSHOT | 快照 |
SA_SQL_TXN_STATEMENT_SNAPSHOT | 语句快照 |
SA_SQL_TXN_READONLY_STATEMENT_SNAPSHOT | 只读语句快照 |
您可以使用 ODBC32.dll 库中的 SQLSetConnectOption 函数通过 ODBC 更改连接的隔离级别。
SQLSetConnectOption 函数采用三个参数:ODBC 连接句柄的值、您希望设置隔离级别这一事实,以及与该隔离级别相对应的值。下表中显示了这些值。
字符串 | 值 |
---|---|
SQL_TXN_ISOLATION | 108 |
SQL_TXN_READ_UNCOMMITTED | 1 |
SQL_TXN_READ_COMMITTED | 2 |
SQL_TXN_REPEATABLE_READ | 4 |
SQL_TXN_SERIALIZABLE | 8 |
SA_SQL_TXN_SNAPSHOT | 32 |
SA_SQL_TXN_STATEMENT_SNAPSHOT | 64 |
SA_SQL_TXN_READONLY_STATEMENT_SNAPSHOT | 128 |
请不要使用 SET OPTION 语句从 ODBC 应用程序中更改隔离级别。由于 ODBC 驱动程序不分析语句,所以,在 ODBC 中执行任何语句都不会被 ODBC 驱动程序识别。这可能会导致意外的锁定行为。
以下函数调用会将连接 MyConnection 的隔离级别设置为隔离级别 2:
SQLSetConnectOption( MyConnection.hDbc, SQL_TXN_ISOLATION, SQL_TXN_REPEATABLE_READ ) |
ODBC 使用隔离功能支持各种数据库锁选项。例如,在 PowerBuilder 中,可以使用事务对象的 Lock 属性在连接到数据库时设置隔离级别。Lock 属性是一个字符串,按以下方式设置:
SQLCA.lock = "RU" |
Lock 选项仅在 CONNECT 发生时起作用。在 CONNECT 之后再更改 Lock 属性不会对连接产生任何影响。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |