public void ReleaseConnection (OciGlue connection) { lock (list) { list.Add (connection); Monitor.Pulse (list); } }
public virtual OciGlue CreateConnection (OracleConnectionInfo info) { OciGlue oci; oci = new OciGlue (); oci.CreateConnection (info); return oci; }
public static OciErrorInfo HandleError(OciHandle hwnd, int status) { OciErrorInfo info; info.ErrorCode = status; info.ErrorMessage = OciGlue.ReturnCodeToString(status); if (status == OciGlue.OCI_ERROR || status == OciGlue.OCI_SUCCESS_WITH_INFO) { OciHandle h = hwnd; if (h == null) { throw new Exception("Internal driver error: handle is null."); } ulong errbufSize = 4096; UIntPtr errbufSizep = new UIntPtr(errbufSize); IntPtr errbuf = OciCalls.AllocateClear((int)errbufSize); OciCalls.OCIErrorGet(hwnd, 1, IntPtr.Zero, out info.ErrorCode, errbuf, (uint)errbufSize, OciHandleType.Error); byte[] bytea = new byte[errbufSize]; Marshal.Copy(errbuf, bytea, 0, (int)errbufSize); errbufSize = 0; // first call to OCICharSetToUnicode gets the size OciCalls.OCICharSetToUnicode(h, null, bytea, ref errbufSizep); errbufSize = errbufSizep.ToUInt64(); StringBuilder str = new StringBuilder((int)errbufSize); // second call to OCICharSetToUnicode gets the string OciCalls.OCICharSetToUnicode(h, str, bytea, ref errbufSizep); string errmsg = String.Empty; if (errbufSize > 0) { errmsg = str.ToString(); info.ErrorMessage = String.Copy(errmsg); } Marshal.FreeHGlobal(errbuf); } return(info); }
void Open () { if (State == ConnectionState.Open) return; PersistSecurityInfo (); if (!pooling || conInfo.SetNewPassword == true) { oci = new OciGlue (); oci.CreateConnection (conInfo); } else { pool = pools.GetConnectionPool (conInfo, minPoolSize, maxPoolSize); oci = pool.GetConnection (); } state = ConnectionState.Open; CreateStateChange (ConnectionState.Closed, ConnectionState.Open); }
protected override void Dispose (bool disposing) { if (!disposed) { if (State == ConnectionState.Open) Close (); dataReader = null; transaction = null; oci = null; pool = null; conInfo.Username = string.Empty; conInfo.Database = string.Empty; conInfo.Password = string.Empty; connectionString = null; parsedConnectionString = null; base.Dispose (disposing); disposed = true; } }