private int FillFromRecord(object data, UnsafeNativeMethods.ADORecordConstruction record, string srcTable) { object?result = null; try { result = record.get_Row(); } catch (Exception e) { // UNDONE - should not be catching all exceptions!!! if (!ADP.IsCatchableExceptionType(e)) { throw; } throw ODB.Fill_EmptyRecord("adodb", e); } if (null != result) { CommandBehavior behavior = (MissingSchemaAction.AddWithKey != MissingSchemaAction) ? 0 : CommandBehavior.KeyInfo; behavior |= CommandBehavior.SequentialAccess | CommandBehavior.SingleRow; OleDbDataReader?dataReader = null; try { dataReader = new OleDbDataReader(null, null, 0, behavior); dataReader.InitializeIRow(result, ADP.RecordsUnaffected); dataReader.BuildMetaInfo(); if (data is DataTable) { return(base.Fill((DataTable)data, dataReader)); } else { return(base.Fill((DataSet)data, srcTable, dataReader, 0, 0)); } } finally { if (null != dataReader) { dataReader.Close(); } } } return(0); }
private int FillFromRecord(Object data, UnsafeNativeMethods.ADORecordConstruction record, string srcTable) { object result = null; try { Bid.Trace("<oledb.ADORecordConstruction.get_Row|API|ADODB>\n"); result = record.get_Row(); // MDAC 83342 Bid.Trace("<oledb.ADORecordConstruction.get_Row|API|ADODB|RET> %08X{HRESULT}\n", 0); } catch (Exception e) { // if (!ADP.IsCatchableExceptionType(e)) { throw; } throw ODB.Fill_EmptyRecord("adodb", e); } if (null != result) { CommandBehavior behavior = (MissingSchemaAction.AddWithKey != MissingSchemaAction) ? 0 : CommandBehavior.KeyInfo; behavior |= CommandBehavior.SequentialAccess | CommandBehavior.SingleRow; OleDbDataReader dataReader = null; try { dataReader = new OleDbDataReader(null, null, 0, behavior); dataReader.InitializeIRow(result, ADP.RecordsUnaffected); dataReader.BuildMetaInfo(); if (data is DataTable) { return(base.Fill((DataTable)data, dataReader)); // MDAC 65506 } else { return(base.Fill((DataSet)data, srcTable, dataReader, 0, 0)); } } finally { if (null != dataReader) { dataReader.Close(); } } } return(0); }
private int FillFromRecord(Object data, UnsafeNativeMethods.ADORecordConstruction record, string srcTable) { object result = null; try { int hr; #if DEBUG ODB.Trace_Begin("ADORecordConstruction", "get_Row"); #endif hr = record.get_Row(out result); #if DEBUG ODB.Trace_End("ADORecordConstruction", "get_Row", hr); #endif } catch (Exception e) { ADP.TraceException(e); throw ODB.Fill_EmptyRecord("adodb", e); } if (null != result) { CommandBehavior behavior = (MissingSchemaAction.AddWithKey != MissingSchemaAction) ? 0 : CommandBehavior.KeyInfo; try { using (OleDbDataReader dataReader = new OleDbDataReader(null, null, 0, IntPtr.Zero)) { dataReader.InitializeIRow(result, -1, behavior | CommandBehavior.SingleRow); dataReader.BuildMetaInfo(); if (data is DataTable) { return(base.Fill((DataTable)data, dataReader)); // MDAC 65506 } else { return(base.Fill((DataSet)data, srcTable, dataReader, 0, 0)); } } } catch { // MDAC 80973 throw; } } return(0); }