private System.Data.Common.UnsafeNativeMethods.ICommandWithParameters ICommandWithParameters() { Bid.Trace("<oledb.IUnknown.QueryInterface|API|OLEDB|command> %d#, ICommandWithParameters\n", this.ObjectID); System.Data.Common.UnsafeNativeMethods.ICommandWithParameters parameters = this._icommandText as System.Data.Common.UnsafeNativeMethods.ICommandWithParameters; if (parameters == null) { throw ODB.NoProviderSupportForParameters(this._connection.Provider, null); } return(parameters); }
private void ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods.ICommandWithParameters commandWithParameters, tagDBPARAMBINDINFO[] bindInfo) { IntPtr[] rgParamOrdinals = new IntPtr[bindInfo.Length]; for (int i = 0; i < rgParamOrdinals.Length; i++) { rgParamOrdinals[i] = (IntPtr)(i + 1); } Bid.Trace("<oledb.ICommandWithParameters.SetParameterInfo|API|OLEDB> %d#\n", this.ObjectID); OleDbHResult result = commandWithParameters.SetParameterInfo((IntPtr)bindInfo.Length, rgParamOrdinals, bindInfo); Bid.Trace("<oledb.ICommandWithParameters.SetParameterInfo|API|OLEDB|RET> %08X{HRESULT}\n", result); if (result < OleDbHResult.S_OK) { this.ProcessResults(result); } }
private void CreateAccessor() { System.Data.Common.UnsafeNativeMethods.ICommandWithParameters commandWithParameters = this.ICommandWithParameters(); OleDbParameterCollection parameters = this._parameters; OleDbParameter[] array = new OleDbParameter[parameters.Count]; parameters.CopyTo(array, 0); Bindings bindings = new Bindings(array, parameters.ChangeID); for (int i = 0; i < array.Length; i++) { bindings.ForceRebind |= array[i].BindParameter(i, bindings); } bindings.AllocateForAccessor(null, 0, 0); this.ApplyParameterBindings(commandWithParameters, bindings.BindInfo); System.Data.Common.UnsafeNativeMethods.IAccessor iaccessor = this.IAccessor(); OleDbHResult hr = bindings.CreateAccessor(iaccessor, 4); if (hr < OleDbHResult.S_OK) { this.ProcessResults(hr); } this._dbBindings = bindings; }