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