207 lines
5.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|