using System; using System.Data; using System.Globalization; using SDA.DataProvider.Core; namespace SDA.DataProvider { /// /// Adapter /// public class SDADataAdapter : IDisposable { internal SDADataAdapterWrapper DataAdapter; internal SDACommand InnerDeleteCommand; internal SDACommand InnerInsertCommand; internal SDACommand InnerSelectCommand; internal SDACommand InnerUpdateCommand; /// /// Előállít egy új adatbázis-kapcsolat példányt. /// public SDADataAdapter() { if (SDAFactory.Instance == null) { throw new InvalidOperationException("SDAFactory.Instance"); } DataAdapter = SDAFactory.Instance.CreateDataAdapter(); } /// /// Előállít egy új adatbázis-kapcsolat példányt. /// /// Az adatbázis-kezelő típusa. public SDADataAdapter(DatabaseType type) : this(type, null) { } /// /// Előállít egy új adatbázis-kapcsolat példányt. /// /// Az adatbázis-kezelő típusa. public SDADataAdapter(DatabaseType type, int? commandTimeout) { DataAdapter = SDAFactory.GetByDatabaseType(type, commandTimeout).CreateDataAdapter(); } /// /// Törléshez használt parancsobjektum. /// public SDACommand DeleteCommand { get { return InnerDeleteCommand; } set { DataAdapter.DeleteCommand = value?.Command; InnerDeleteCommand = value; } } /// /// Beszúráshoz használt parancsobjektum. /// public SDACommand InsertCommand { get { return InnerInsertCommand; } set { DataAdapter.InsertCommand = value?.Command; InnerInsertCommand = value; } } /// /// Lekérdezéshez használt parancsobjektum. /// public SDACommand SelectCommand { get { return InnerSelectCommand; } set { DataAdapter.SelectCommand = value?.Command; InnerSelectCommand = value; } } /// /// Módosításhoz használt parancsobjektum. /// public SDACommand UpdateCommand { get { return InnerUpdateCommand; } set { DataAdapter.UpdateCommand = value?.Command; InnerUpdateCommand = value; } } /// /// Feltölti adattal a táblát. /// /// A feltöltendő tábla public void Fill(DataTable table) { DataAdapter.Fill(table); } /// /// Feltölti adattal a táblát /// /// A feltöltendő tábla /// Az első rekord indexe /// Az utolsó rekord indexe /// Nem szabványos metódus! public void Fill(DataTable table, int startRecord, int endRecord) { if (table == null) { throw new ArgumentNullException(nameof(table)); } table.TableName = "table"; using (DataSet dts = new DataSet()) { dts.Locale = CultureInfo.CurrentCulture; dts.Tables.Add(table); DataAdapter.Fill(dts, startRecord, endRecord, "table"); } } /// /// Feltölti adattal a táblát /// /// A feltöltendő adathalmaz public void Fill(DataSet dataSet) { DataAdapter.Fill(dataSet); } /// /// Frissíti az adatbázist. /// /// A forrás adathalmaz public void Update(DataSet dataSet) { DataAdapter.Update(dataSet); } /// /// Frissíti az adatbázist. /// /// A forrás tábla public void Update(DataTable dataTable) { DataAdapter.Update(dataTable); } bool _disposed; /// /// Explicit destruktor. /// /// Programozott felszabadítás? protected virtual void Dispose(bool disposing) { if (_disposed) { return; } if (disposing) { InnerDeleteCommand = null; InnerInsertCommand = null; InnerSelectCommand = null; InnerUpdateCommand = null; if (DataAdapter != null) { DataAdapter.Dispose(); DataAdapter = null; } } _disposed = true; } /// /// Eldobja az objektumot. /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } } }