kreta/Sda.DataProvider/SDADataAdapter.cs
2024-03-13 00:33:46 +01:00

207 lines
5.7 KiB
C#

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