This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,415 @@
using System;
using System.Data;
using System.Diagnostics.CodeAnalysis;
using SDA.DataProvider.Core;
namespace SDA.DataProvider
{
/// <summary>
/// Adatbázis lekérdezések eredményhalmazának felolvasását végző osztály.
/// </summary>
public class SDADataReader : IDisposable
{
internal SDADataReaderWrapper Reader;
internal SDADataReader()
{
}
internal SDADataReader(SDADataReaderWrapper reader)
{
Reader = reader;
}
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)
{
if (Reader != null)
{
Reader.Dispose();
Reader = null;
}
}
_disposed = true;
}
/// <summary>
/// Eldobja az objektumot.
/// </summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
/// <summary>
/// Lezárja az objektumot.
/// </summary>
public void Close()
{
Reader.Close();
}
/// <summary>
/// A következő rekordra áll.
/// </summary>
/// <returns></returns>
public bool Read()
{
return Reader.Read();
}
/// <summary>
/// A következő eredményre áll.
/// </summary>
/// <returns>True, ha van még eredmény; egyébként False.</returns>
public bool NextResult()
{
return Reader.NextResult();
}
/// <summary>
/// Megvizsgálja, hogy a jelenlegi rekord adott oszlopának van-e értéke.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>True, ha nincs értéke; egyébként False</returns>
public bool IsDBNull(int index)
{
return Reader.IsDBNull(index);
}
/// <summary>
/// A megadott oszlop értékét logikai típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public bool GetBoolean(int index)
{
return Reader.GetBoolean(index);
}
/// <summary>
/// A megadott oszlop értékét bájtként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public byte GetByte(int index)
{
return Reader.GetByte(index);
}
/// <summary>
/// A megadott oszlop értékét karakterként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public char GetChar(int index)
{
return Reader.GetChar(index);
}
/// <summary>
/// A megadott oszlop értékét dátum-időként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public DateTime GetDateTime(int index)
{
return Reader.GetDateTime(index);
}
/// <summary>
/// A megadott oszlop értékét számként (decimal) adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public decimal GetDecimal(int index)
{
return Reader.GetDecimal(index);
}
/// <summary>
/// A megadott oszlop értékét lebegőpontos típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public double GetDouble(int index)
{
return Reader.GetDouble(index);
}
/// <summary>
/// A megadott oszlop értékét 16 bites előjeles egész típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public short GetInt16(int index)
{
return Reader.GetInt16(index);
}
/// <summary>
/// A megadott oszlop értékét 32 bites egész típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public int GetInt32(int index)
{
return Reader.GetInt32(index);
}
/// <summary>
/// A megadott oszlop értékét 64 bites egész típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public long GetInt64(int index)
{
return Reader.GetInt64(index);
}
/// <summary>
/// A megadott oszlop értékét karakterláncként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public string GetString(int index)
{
return Reader.GetString(index);
}
/// <summary>
/// A megadott oszlop értékét karakterláncként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public string GetLongString(int index)
{
return Reader.GetLongString(index);
}
/// <summary>
/// A megadott oszlop értékét objektumként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop értéke</returns>
public object GetValue(int index)
{
return Reader.GetValue(index);
}
/// <summary>
/// A megadott oszlop Guid értékét adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <returns>Az oszlop Guid értéke</returns>
public Guid GetGuid(int index)
{
return Reader.GetGuid(index);
}
/// <summary>
/// Visszaadja a jelenlegi rekord összes oszlopának értékét.
/// </summary>
/// <param name="values">Objektumtömb, amibe az értékeket kell másolni</param>
/// <returns>Tömbbe másolt objektumok száma</returns>
public int GetValues(object[] values)
{
return Reader.GetValues(values);
}
/// <summary>
/// Visszaadja az objektum metaadatait.
/// </summary>
/// <returns>Egy DataTable objektum, ami az oszlopok leírását tartalmazza</returns>
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
public DataTable GetSchemaTable()
{
return Reader.GetSchemaTable();
}
/// <summary>
/// Visszaadja a megadott nevű oszlop értékét.
/// </summary>
public object this[string name] => Reader[name];
/// <summary>
/// Visszaadja a megadott indexű oszlop értékét.
/// </summary>
public object this[int index]
{
get
{
return Reader[index];
}
}
/// <summary>
/// Lezárult-e az olvasás?
/// </summary>
public bool IsClosed
{
get
{
return Reader.IsClosed;
}
}
/// <summary>
/// Az aktuális sor oszlopainak száma.
/// </summary>
public int FieldCount
{
get
{
return Reader.FieldCount;
}
}
/// <summary>
/// Megadja egy mező indexét.
/// </summary>
/// <param name="fieldName">A kért mező neve</param>
/// <returns>Az oszlop indexe</returns>
public int GetOrdinal(string fieldName)
{
return Reader.GetOrdinal(fieldName);
}
#region Nem szabványos kényelmi funkciók
/// <summary>
/// A megadott oszlop értékét logikai típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public bool? GetBoolean(int index, bool? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetBoolean(index);
}
/// <summary>
/// A megadott oszlop értékét bájtként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public byte? GetByte(int index, byte? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetByte(index);
}
/// <summary>
/// A megadott oszlop értékét karakterként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public char? GetChar(int index, char? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetChar(index);
}
/// <summary>
/// A megadott oszlop értékét dátum-időként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public DateTime? GetDateTime(int index, DateTime? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetDateTime(index);
}
/// <summary>
/// A megadott oszlop értékét számként (decimal) adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public decimal? GetDecimal(int index, decimal? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetDecimal(index);
}
/// <summary>
/// A megadott oszlop értékét lebegőpontos típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public double? GetDouble(int index, double? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetDouble(index);
}
/// <summary>
/// A megadott oszlop értékét 16 bites előjeles egész típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public short? GetInt16(int index, short? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetInt16(index);
}
/// <summary>
/// A megadott oszlop értékét 32 bites egész típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public int? GetInt32(int index, int? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetInt32(index);
}
/// <summary>
/// A megadott oszlop értékét 64 bites egész típusként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public long? GetInt64(int index, long? defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetInt64(index);
}
/// <summary>
/// A megadott oszlop értékét karakterláncként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public string GetString(int index, string defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetString(index);
}
/// <summary>
/// A megadott oszlop értékét objektumként adja vissza.
/// </summary>
/// <param name="index">Az oszlop sorszáma</param>
/// <param name="defaultValue">Null esetén mivel térjen vissza.</param>
/// <returns>Az oszlop értéke</returns>
public object GetValue(int index, object defaultValue)
{
return IsDBNull(index) ? defaultValue : Reader.GetValue(index);
}
#endregion
}
}