Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Fill() [4/4]

virtual int System.Data.Common.DataAdapter.Fill ( DataTable[] dataTables,
IDataReader dataReader,
int startRecord,
int maxRecords )
inlineprotectedvirtualinherited

Definition at line 420 of file DataAdapter.cs.

421 {
422 long scopeId = DataCommonEventSource.Log.EnterScope("<comm.DataAdapter.Fill|API> {0}, dataTables[], dataReader, startRecord, maxRecords", ObjectID);
423 try
424 {
425 ADP.CheckArgumentLength(dataTables, "dataTables");
426 if (dataTables == null || dataTables.Length == 0 || dataTables[0] == null)
427 {
428 throw ADP.FillRequires("dataTable");
429 }
430 if (dataReader == null)
431 {
432 throw ADP.FillRequires("dataReader");
433 }
434 if (1 < dataTables.Length && (startRecord != 0 || maxRecords != 0))
435 {
436 throw ADP.NotSupported();
437 }
438 int result = 0;
439 bool flag = false;
440 DataSet dataSet = dataTables[0].DataSet;
441 try
442 {
443 if (dataSet != null)
444 {
445 flag = dataSet.EnforceConstraints;
446 dataSet.EnforceConstraints = false;
447 }
448 for (int i = 0; i < dataTables.Length && !dataReader.IsClosed; i++)
449 {
451 if (dataReaderContainer.FieldCount <= 0)
452 {
453 if (i != 0)
454 {
455 continue;
456 }
457 bool flag2;
458 do
459 {
460 flag2 = FillNextResult(dataReaderContainer);
461 }
462 while (flag2 && dataReaderContainer.FieldCount <= 0);
463 if (!flag2)
464 {
465 break;
466 }
467 }
468 if (0 >= i || FillNextResult(dataReaderContainer))
469 {
470 int num = FillFromReader(null, dataTables[i], null, dataReaderContainer, startRecord, maxRecords);
471 if (i == 0)
472 {
473 result = num;
474 }
475 continue;
476 }
477 break;
478 }
479 }
480 catch (ConstraintException)
481 {
482 flag = false;
483 throw;
484 }
485 finally
486 {
487 if (flag)
488 {
489 dataSet.EnforceConstraints = true;
490 }
491 }
492 return result;
493 }
494 finally
495 {
496 DataCommonEventSource.Log.ExitScope(scopeId);
497 }
498 }
virtual bool ReturnProviderSpecificTypes
int FillFromReader(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int startRecord, int maxRecords)
bool FillNextResult(DataReaderContainer dataReader)
static DataReaderContainer Create(IDataReader dataReader, bool returnProviderSpecificTypes)

References System.Data.Common.ADP.CheckArgumentLength(), System.Data.ProviderBase.DataReaderContainer.Create(), System.Data.DataTable.DataSet, System.Data.DataSet.EnforceConstraints, System.Data.ProviderBase.DataReaderContainer.FieldCount, System.Data.Common.DataAdapter.FillFromReader(), System.Data.Common.DataAdapter.FillNextResult(), System.Data.Common.ADP.FillRequires(), System.Data.IDataReader.IsClosed, System.Data.DataCommonEventSource.Log, System.Data.Common.ADP.NotSupported(), System.Data.Common.DataAdapter.ObjectID, and System.Data.Common.DataAdapter.ReturnProviderSpecificTypes.