internal OleDbHResult CreateAccessor(UnsafeNativeMethods.IAccessor iaccessor, int flags, ColumnBinding[] bindings) { int[] rowBindStatus = new int[BindingCount()]; _iaccessor = iaccessor; OleDbHResult hr = iaccessor.CreateAccessor(flags, (IntPtr)rowBindStatus.Length, this, (IntPtr)_dataLength, out _accessorHandle, rowBindStatus); for (int k = 0; k < rowBindStatus.Length; ++k) { if (DBBindStatus.OK != (DBBindStatus)rowBindStatus[k]) { if (ODB.DBACCESSOR_PARAMETERDATA == flags) { throw ODB.BadStatus_ParamAcc(bindings[k].ColumnBindingOrdinal, (DBBindStatus)rowBindStatus[k]); } else if (ODB.DBACCESSOR_ROWDATA == flags) { throw ODB.BadStatusRowAccessor(bindings[k].ColumnBindingOrdinal, (DBBindStatus)rowBindStatus[k]); } else { Debug.Assert(false, "unknown accessor buffer"); } } } return(hr); }
internal OleDbHResult CreateAccessor(UnsafeNativeMethods.IAccessor iaccessor, int flags, ColumnBinding[] bindings) { OleDbHResult result = OleDbHResult.S_OK; int[] rgStatus = new int[this.BindingCount()]; this._iaccessor = iaccessor; Bid.Trace("<oledb.IAccessor.CreateAccessor|API|OLEDB>\n"); result = iaccessor.CreateAccessor(flags, (IntPtr)rgStatus.Length, this, (IntPtr)this._dataLength, out this._accessorHandle, rgStatus); Bid.Trace("<oledb.IAccessor.CreateAccessor|API|OLEDB|RET> %08X{HRESULT}\n", result); for (int i = 0; i < rgStatus.Length; i++) { if (rgStatus[i] != 0) { if (4 == flags) { throw ODB.BadStatus_ParamAcc(bindings[i].ColumnBindingOrdinal, (DBBindStatus)rgStatus[i]); } if (2 == flags) { throw ODB.BadStatusRowAccessor(bindings[i].ColumnBindingOrdinal, (DBBindStatus)rgStatus[i]); } } } return(result); }
private void CreateAccessor() { Debug.Assert(System.Data.CommandType.Text == CommandType || System.Data.CommandType.StoredProcedure == CommandType, "CreateAccessor: incorrect CommandType"); Debug.Assert(null == _dbBindings, "CreateAccessor: already has dbBindings"); Debug.Assert(HasParameters(), "CreateAccessor: unexpected, no parameter collection"); // do this first in-case the command doesn't support parameters UnsafeNativeMethods.ICommandWithParameters commandWithParameters = ICommandWithParameters(); OleDbParameterCollection collection = _parameters !; OleDbParameter[] parameters = new OleDbParameter[collection.Count]; collection.CopyTo(parameters, 0); // _dbBindings is used as a switch during ExecuteCommand, so don't set it until everything okay Bindings bindings = new Bindings(parameters, collection.ChangeID); for (int i = 0; i < parameters.Length; ++i) { bindings.ForceRebind |= parameters[i].BindParameter(i, bindings); } bindings.AllocateForAccessor(null, 0, 0); ApplyParameterBindings(commandWithParameters, bindings.BindInfo !); UnsafeNativeMethods.IAccessor iaccessor = IAccessor(); OleDbHResult hr = bindings.CreateAccessor(iaccessor, ODB.DBACCESSOR_PARAMETERDATA); if (hr < 0) { ProcessResults(hr); } _dbBindings = bindings; }
protected override bool ReleaseHandle() { this._iaccessor = null; if (this._needToReset && this._haveData) { IntPtr handle = base.handle; if (IntPtr.Zero != handle) { this.ResetValues(handle, null); } } return(base.ReleaseHandle()); }
protected override bool ReleaseHandle() { // NOTE: The SafeHandle class guarantees this will be called exactly once. _iaccessor = null; if (_needToReset && _haveData) { IntPtr buffer = base.handle; if (IntPtr.Zero != buffer) { ResetValues(buffer, null); } } return(base.ReleaseHandle()); }
internal void Dispose() { int num; this.ResetValues(); UnsafeNativeMethods.IAccessor accessor = this._iaccessor; IntPtr hAccessor = this._accessorHandle; this._iaccessor = null; this._accessorHandle = ODB.DB_INVALID_HACCESSOR; if (((ODB.DB_INVALID_HACCESSOR != hAccessor) && (accessor != null)) && (accessor.ReleaseAccessor(hAccessor, out num) < OleDbHResult.S_OK)) { SafeNativeMethods.Wrapper.ClearErrorInfo(); } base.Dispose(); }
internal new void Dispose() { ResetValues(); UnsafeNativeMethods.IAccessor iaccessor = _iaccessor; IntPtr accessorHandle = _accessorHandle; _iaccessor = null; _accessorHandle = ODB.DB_INVALID_HACCESSOR; if ((ODB.DB_INVALID_HACCESSOR != accessorHandle) && (null != iaccessor)) { OleDbHResult hr; int refcount; hr = iaccessor.ReleaseAccessor(accessorHandle, out refcount); if (hr < 0) { // ignore any error msgs SafeNativeMethods.Wrapper.ClearErrorInfo(); } } base.Dispose(); }
internal OleDbHResult CreateAccessor(UnsafeNativeMethods.IAccessor iaccessor, int flags, ColumnBinding[] bindings) { OleDbHResult result = OleDbHResult.S_OK; int[] rgStatus = new int[this.BindingCount()]; this._iaccessor = iaccessor; Bid.Trace("<oledb.IAccessor.CreateAccessor|API|OLEDB>\n"); result = iaccessor.CreateAccessor(flags, (IntPtr) rgStatus.Length, this, (IntPtr) this._dataLength, out this._accessorHandle, rgStatus); Bid.Trace("<oledb.IAccessor.CreateAccessor|API|OLEDB|RET> %08X{HRESULT}\n", result); for (int i = 0; i < rgStatus.Length; i++) { if (rgStatus[i] != 0) { if (4 == flags) { throw ODB.BadStatus_ParamAcc(bindings[i].ColumnBindingOrdinal, (DBBindStatus) rgStatus[i]); } if (2 == flags) { throw ODB.BadStatusRowAccessor(bindings[i].ColumnBindingOrdinal, (DBBindStatus) rgStatus[i]); } } } return result; }
internal OleDbHResult CreateAccessor(UnsafeNativeMethods.IAccessor iaccessor, int flags, ColumnBinding[] bindings) { OleDbHResult hr = 0; int[] rowBindStatus = new int[BindingCount()]; _iaccessor = iaccessor; Bid.Trace("<oledb.IAccessor.CreateAccessor|API|OLEDB>\n"); hr = iaccessor.CreateAccessor(flags, (IntPtr)rowBindStatus.Length, this, (IntPtr)_dataLength, out _accessorHandle, rowBindStatus); // MDAC 69530 Bid.Trace("<oledb.IAccessor.CreateAccessor|API|OLEDB|RET> %08X{HRESULT}\n", hr); for (int k = 0; k < rowBindStatus.Length; ++k) { if (DBBindStatus.OK != (DBBindStatus)rowBindStatus[k]) { if (ODB.DBACCESSOR_PARAMETERDATA == flags) { throw ODB.BadStatus_ParamAcc(bindings[k].ColumnBindingOrdinal, (DBBindStatus)rowBindStatus[k]); } else if (ODB.DBACCESSOR_ROWDATA == flags) { throw ODB.BadStatusRowAccessor(bindings[k].ColumnBindingOrdinal, (DBBindStatus)rowBindStatus[k]); } else Debug.Assert(false, "unknown accessor buffer"); } } return hr; }
override protected bool ReleaseHandle() { // NOTE: The SafeHandle class guarantees this will be called exactly once. _iaccessor = null; if (_needToReset && _haveData) { IntPtr buffer = base.handle; if (IntPtr.Zero != buffer) { ResetValues(buffer, null); } } return base.ReleaseHandle(); }
internal void CloseFromConnection() { _iaccessor = null; _accessorHandle = ODB.DB_INVALID_HACCESSOR; }
protected override bool ReleaseHandle() { this._iaccessor = null; if (this._needToReset && this._haveData) { IntPtr handle = base.handle; if (IntPtr.Zero != handle) { this.ResetValues(handle, null); } } return base.ReleaseHandle(); }
internal void CloseFromConnection() { this._iaccessor = null; this._accessorHandle = ODB.DB_INVALID_HACCESSOR; }
internal OleDbHResult CreateAccessor(UnsafeNativeMethods.IAccessor iaccessor, int flags) { return(this._rowBinding.CreateAccessor(iaccessor, flags, this._columnBindings)); }
internal OleDbHResult CreateAccessor(UnsafeNativeMethods.IAccessor iaccessor, int flags) { Debug.Assert(null != _rowBinding, "no row binding"); Debug.Assert(null != _columnBindings, "no column bindings"); return(_rowBinding.CreateAccessor(iaccessor, flags, _columnBindings)); }