using System; using SDA.DataProvider; namespace Kreta.Framework.Entities { /// /// A generált DataAccessor-ok által használt statikus segédosztály, /// a generált kód mennyiségének csökkentésére. Az osztály kézzel írt kód számára tabu. /// /// /// Az osztály metódusai teljesítménykritikusak, ezért paraméterellenőrzés nem történik bennük, /// megbízunk a hívóban. /// public sealed class DAUtil { // <> /// /// Az osztály alapértelmezett konstruktora. /// /// Az osztály statikus, példányosítását nem szándékozzuk. private DAUtil() { } /// /// Létrehoz egy új SDA.DataProvider.SDACommand parancsobjektumot, /// és inicializálja a Commandtext, Connection, Transaction tulajdonságait. /// /// A parancsobjektum sql szövege /// A létrehozott parancsobjektum public static SDACommand CreateCommand(string commandText) { SDACommand result = new SDACommand { CommandText = commandText, Connection = UserContext.Instance.SDAConnection, Transaction = UserContext.Instance.SDATransaction }; return result; } /// /// Az entitás felvétele után utólag lekérdezi az entitás ID-ját. /// /// public static int? GetEntityID(SDAConnection connection, SDATransaction transaction) { using (SDACommand command = new SDACommand()) { command.Connection = connection; command.Transaction = transaction; command.CommandText = "SELECT @@IDENTITY as ID"; var id = command.ExecuteScalar(); return id != DBNull.Value ? Convert.ToInt32(id) : (int?)null; } } #region BindParameter /// /// Hozzáad a parancsobjektumhoz egy új paramétert. /// /// A tulajdonos objektum /// A paraméter neve /// A paraméter típusa /// A paraméter hossza /// A paraméter értéke /// A paraméter null-e vagy sem public static void BindParameter(SDA.DataProvider.SDACommand command, string parameterName, SDA.DataProvider.SDADBType type, int length, object value, bool isNull) { if (isNull || value == null) { command.Parameters.Add(parameterName, type, length).Value = DBNull.Value; } else { command.Parameters.Add(parameterName, type, length).Value = value; } } /// /// Hozzáad a parancsobjektumhoz egy új paramétert. /// /// A tulajdonos objektum /// A paraméter neve /// A paraméter típusa /// A paraméter értéke /// A paraméter null-e vagy sem public static void BindParameter(SDA.DataProvider.SDACommand command, string parameterName, SDA.DataProvider.SDADBType type, object value, bool isNull) { if (isNull || value == null) { command.Parameters.Add(parameterName, type).Value = DBNull.Value; } else { command.Parameters.Add(parameterName, type).Value = value; } } /// /// Hozzáad a parancsobjektumhoz egy új paramétert. /// /// A tulajdonos objektum /// A paraméter neve /// A paraméter értéke public static void BindIdParameter(SDA.DataProvider.SDACommand command, string parameterName, int value) { if (value == -1) { command.Parameters.Add(parameterName, SDA.DataProvider.SDADBType.Int).Value = DBNull.Value; } else { command.Parameters.Add(parameterName, SDA.DataProvider.SDADBType.Int).Value = value; } } #endregion #region ReadAttribute /// /// Bináris típusú attribútum értékét olvassa be. /// /// A forrás objektum /// Az attribútum indexe /// Alapértelmezett érték null olvasása esetén /// True, ha nem null lett olvasva; egyébként false public static bool ReadBinaryAttribute(SDA.DataProvider.SDADataReader reader, int index, ref byte[] target, ref bool isNull, byte[] defaultValue) { if (reader.IsDBNull(index)) { isNull = true; target = defaultValue; return false; } isNull = false; target = (byte[])reader.GetValue(index); return true; } public static byte[] ReadBinaryAttribute(SDA.DataProvider.SDADataReader reader, int index, byte[] defaultValue) { if (reader.IsDBNull(index)) { return defaultValue; } return (byte[])reader.GetValue(index); } public static byte[] ReadBinaryAttribute(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return (byte[])reader.GetValue(index); } /// /// Logikai típusú attribútum értékét olvassa be. /// /// A forrás objektum /// Az attribútum indexe /// Alapértelmezett érték null olvasása esetén /// True, ha nem null lett olvasva; egyébként false public static bool ReadBooleanAttribute(SDA.DataProvider.SDADataReader reader, int index, ref bool target, ref bool isNull, bool defaultValue) { if (reader.IsDBNull(index)) { isNull = true; target = defaultValue; return false; } isNull = false; char tmp = reader.GetString(index)[0]; target = (tmp == 'T' || tmp == 'I'); return true; } public static bool ReadBooleanAttribute(SDA.DataProvider.SDADataReader reader, int index, bool defaultValue) { if (reader.IsDBNull(index)) { return defaultValue; } char tmp = reader.GetString(index)[0]; return (tmp == 'T' || tmp == 'I'); } public static bool? ReadBooleanAttribute(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } char tmp = reader.GetString(index)[0]; return (tmp == 'T' || tmp == 'I'); } /// /// Dátum típusú attribútum értékét olvassa be. /// /// A forrás objektum /// Az attribútum indexe /// Alapértelmezett érték null olvasása esetén /// True, ha nem null lett olvasva; egyébként false public static bool ReadDateTimeAttribute(SDA.DataProvider.SDADataReader reader, int index, ref DateTime target, ref bool isNull, DateTime defaultValue) { if (reader.IsDBNull(index)) { isNull = true; target = defaultValue; return false; } isNull = false; target = reader.GetDateTime(index); return true; } public static DateTime ReadDateTimeAttribute(SDA.DataProvider.SDADataReader reader, int index, DateTime defaultValue) { if (reader.IsDBNull(index)) { return defaultValue; } return reader.GetDateTime(index); } public static DateTime? ReadDateTimeAttribute(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return reader.GetDateTime(index); } /// /// Lebegőpontos típusú attribútum értékét olvassa be. /// /// A forrás objektum /// Az attribútum indexe /// Alapértelmezett érték null olvasása esetén /// True, ha nem null lett olvasva; egyébként false public static bool ReadDoubleAttribute(SDA.DataProvider.SDADataReader reader, int index, ref double target, ref bool isNull, double defaultValue) { if (reader.IsDBNull(index)) { isNull = true; target = defaultValue; return false; } isNull = false; target = Convert.ToDouble(reader.GetValue(index)); return true; } public static double ReadDoubleAttribute(SDA.DataProvider.SDADataReader reader, int index, double defaultValue) { if (reader.IsDBNull(index)) { return defaultValue; } return Convert.ToDouble(reader.GetValue(index)); } public static double? ReadDoubleAttribute(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return Convert.ToDouble(reader.GetValue(index)); } /// /// ID típusú attribútum értékét olvassa be. /// /// A forrás objektum /// Az attribútum indexe /// A cél /// Alapértelmezett érték null olvasása esetén /// True, ha nem null lett olvasva; egyébként false public static bool ReadIDAttribute(SDA.DataProvider.SDADataReader reader, int index, ref int target, int defaultValue) { if (reader.IsDBNull(index)) { target = defaultValue; return false; } target = Convert.ToInt32(reader.GetValue(index)); return true; } /// /// Egész típusú attribútum értékét olvassa be. /// /// A forrás objektum /// Az attribútum indexe /// Alapértelmezett érték null olvasása esetén /// True, ha nem null lett olvasva; egyébként false public static bool ReadIntegerAttribute(SDA.DataProvider.SDADataReader reader, int index, ref int target, ref bool isNull, int defaultValue) { if (reader.IsDBNull(index)) { isNull = true; target = defaultValue; return false; } isNull = false; target = Convert.ToInt32(reader.GetValue(index)); return true; } public static int ReadIntegerAttribute(SDA.DataProvider.SDADataReader reader, int index, int defaultValue) { if (reader.IsDBNull(index)) { return defaultValue; } return Convert.ToInt32(reader.GetValue(index)); } public static int? ReadIntegerAttribute(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return Convert.ToInt32(reader.GetValue(index)); } /// /// Karakterlánc típusú attribútum értékét olvassa be. /// /// A forrás objektum /// Az attribútum indexe /// A cél /// Null-t olvasott vagy nem null-t /// Alapértelmezett érték null olvasása esetén /// True, ha nem null lett olvasva; egyébként false public static bool ReadStringAttribute(SDA.DataProvider.SDADataReader reader, int index, ref string target, ref bool isNull, string defaultValue) { if (reader.IsDBNull(index)) { isNull = true; target = defaultValue; return false; } isNull = false; target = reader.GetString(index); return true; } public static string ReadStringAttribute(SDA.DataProvider.SDADataReader reader, int index, string defaultValue) { if (reader.IsDBNull(index)) { return defaultValue; } return reader.GetString(index); } public static string ReadStringAttribute(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return reader.GetString(index); } public static bool ReadGuidAttribute(SDA.DataProvider.SDADataReader reader, int index, ref Guid target, ref bool isNull, Guid defaultValue) { if (reader.IsDBNull(index)) { isNull = true; target = defaultValue; return false; } isNull = false; target = Guid.Parse(reader.GetString(index)); return true; } public static Guid ReadGuidAttribute(SDA.DataProvider.SDADataReader reader, int index, Guid defaultValue) { if (reader.IsDBNull(index)) { return defaultValue; } return reader.GetGuid(index); } public static Guid? ReadGuidAttribute(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return reader.GetGuid(index); } #endregion #region Read methods for framework /// /// DateTime? típusú értékét olvas be /// /// A forrás objektum /// Az attribútum indexe /// A beolvasott dátum, vagy null internal static DateTime? ReadDateTime(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return reader.GetDateTime(index); } /// /// Karakterlánc típusú attribútum értékét olvas be /// /// A forrás objektum /// Az attribútum indexe /// A beolvasott string vagy null internal static string ReadString(SDA.DataProvider.SDADataReader reader, int index) { if (reader.IsDBNull(index)) { return null; } return reader.GetString(index); } #endregion } }