本文整理汇总了C#中System.Data.Odbc.OdbcConnection.CreateOdbcException方法的典型用法代码示例。如果您正苦于以下问题:C# OdbcConnection.CreateOdbcException方法的具体用法?C# OdbcConnection.CreateOdbcException怎么用?C# OdbcConnection.CreateOdbcException使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Odbc.OdbcConnection
的用法示例。
在下文中一共展示了OdbcConnection.CreateOdbcException方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetIsolationLevel
private static IsolationLevel GetIsolationLevel (OdbcConnection conn)
{
int lev;
int length;
OdbcReturn ret = libodbc.SQLGetConnectAttr (conn.hDbc,
OdbcConnectionAttribute.TransactionIsolation,
out lev, 0, out length);
if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
throw conn.CreateOdbcException (OdbcHandleType.Dbc, conn.hDbc);
return MapOdbcIsolationLevel ((OdbcIsolationLevel) lev);
}
示例2: OdbcTransaction
internal OdbcTransaction (OdbcConnection conn, IsolationLevel isolationlevel)
{
// Set Auto-commit (102) to false
SetAutoCommit (conn, false);
// Handle isolation level
OdbcIsolationLevel lev = OdbcIsolationLevel.ReadCommitted;
OdbcConnectionAttribute attr = OdbcConnectionAttribute.TransactionIsolation;
switch (isolationlevel) {
case IsolationLevel.ReadUncommitted:
lev = OdbcIsolationLevel.ReadUncommitted;
break;
case IsolationLevel.ReadCommitted:
lev = OdbcIsolationLevel.ReadCommitted;
break;
case IsolationLevel.RepeatableRead:
lev = OdbcIsolationLevel.RepeatableRead;
break;
case IsolationLevel.Serializable:
lev = OdbcIsolationLevel.Serializable;
break;
case IsolationLevel.Snapshot:
// badly broken on MS:
// https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=305736
lev = OdbcIsolationLevel.Snapshot;
// SQL_ATTR_TXN_ISOLATION can be used to set all other isolation
// levels except for SQL_TXN_SS_SNAPSHOT. If you want to use snapshot
// isolation, you must set SQL_TXN_SS_SNAPSHOT through
// SQL_COPT_SS_TXN_ISOLATION. However, you can retrieve the
// isolation level by using either SQL_ATTR_TXN_ISOLATION or
// SQL_COPT_SS_TXN_ISOLATION.
// Source:
// http://msdn2.microsoft.com/en-us/library/ms131709.aspx
attr = OdbcConnectionAttribute.CoptTransactionIsolation;
break;
case IsolationLevel.Unspecified:
// when isolationlevel is not specified, then use
// default isolation level of the driver and
// lazy initialize it in the IsolationLevel property
break;
case IsolationLevel.Chaos:
throw new ArgumentOutOfRangeException ("IsolationLevel",
string.Format (CultureInfo.CurrentCulture,
"The IsolationLevel enumeration " +
"value, {0}, is not supported by " +
"the .Net Framework Odbc Data " +
"Provider.", (int) isolationlevel));
default:
throw new ArgumentOutOfRangeException ("IsolationLevel",
string.Format (CultureInfo.CurrentCulture,
"The IsolationLevel enumeration value, {0}, is invalid.",
(int) isolationlevel));
}
// only change isolation level if it was explictly set
if (isolationlevel != IsolationLevel.Unspecified) {
// mbd: Getting the return code of the second call to SQLSetConnectAttr is missing from original code!
OdbcReturn ret = libodbc.SQLSetConnectAttr (conn.hDbc,
attr, (IntPtr) lev, 0);
if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
throw conn.CreateOdbcException (OdbcHandleType.Dbc, conn.hDbc);
}
this.isolationlevel = isolationlevel;
connection = conn;
isOpen = true;
}
示例3: SetAutoCommit
// Set Auto-commit (102) connection attribute
// [MonoTODO]: nice to have before svn: define libodbc.SQL_IS_UINTEGER = -5
private static void SetAutoCommit (OdbcConnection conn, bool isAuto)
{
OdbcReturn ret = libodbc.SQLSetConnectAttr (conn.hDbc,
OdbcConnectionAttribute.AutoCommit,
(IntPtr) (isAuto ? 1 : 0), -5);
if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
throw conn.CreateOdbcException (OdbcHandleType.Dbc, conn.hDbc);
}