/// <summary>***Geri dönüş yapmayan procedureler için***<para /> /// ÇOK ÖNEMLİ NOT: OUTPUT OLMAYAN PARAMETRELERDE KESİNLİKLE DBTYPE GİRİLMEMELİ. DBTYPE OLANLAR SADECE OUTPUT PARAMETRELERİ<para /> /// TEKRAR TEKRAR AYNI DB NESNESI KULLANILACAKSA ARALARINDA FLUSHPARAMETRE() METODU KULLANILMALI <para /> /// outputs=> gerıye donen output parametreleri<para /> /// Ek-Not: Float==>Single ama Float değerleri doublela karsılamak gerekiyor nedense.<para /> /// </summary> public void SelectSP(string procadi, out List <Dparam> outputs, bool flush = true) { try { var p = new DynamicParameters(); using (IDbConnection _db = new SqlConnection(Helper.connectionstring())) { foreach (var item in parametreler) { p.Add(item.name, item.value); } foreach (var item in outputparametreler) { p.Add(item.name, dbType: item.dbtype, direction: ParameterDirection.Output); } _db.Query(procadi, p, commandType: System.Data.CommandType.StoredProcedure); outputs = new List <Dparam>(); foreach (var item in outputparametreler) { outputs.Add(Dparam.typecaster(p, item.dbtype, item.name)); } } } catch (Exception e) { throw; } finally { if (flush) { FlushParameter(); } } }
/// <summary> /// Class based parametreler listesine sadece name-value ikilisi ile parametre ekler. Sadece gonderılen parametreler ıcın.Outputları kapsamaz. Aynı DB ile sorgularda FlushParameters kullanılmalı<para /> /// </summary> public Dparam AddOutputParameter(string name, DbType dbtype) { try { Dparam param = new Dparam(); param.name = name; param.dbtype = dbtype; this.outputparametreler.Add(param); return(param); } catch (Exception e) { throw; } }
/// <summary> /// Class based parametreler listesine sadece name-value ikilisi ile parametre ekler. Sadece gonderılen parametreler ıcın.Outputları kapsamaz. Aynı DB ile sorgularda FlushParameters kullanılmalı<para /> /// </summary> public Dparam AddParameter(string name, object value) { try { Dparam param = new Dparam(); param.name = name; param.value = value; this.parametreler.Add(param); return(param); //return cokta gereklı degıl aslında } catch (Exception e) { throw; } }
/// <summary>***!!!OUTPUTLU PROCLAR ICIN.!!!***<para /> /// Dönüş değeri generictir. outputs nesnesi geriye name-value ikilisi olarak output degerleri doner.<para /> /// ÇOK ÖNEMLİ NOT: OUTPUT OLMAYAN PARAMETRELERDE KESİNLİKLE DBTYPE GİRİLMEMELİ. DBTYPE OLANLAR SADECE OUTPUT PARAMETRELERİ<para /> /// TEKRAR TEKRAR AYNI DB NESNESI KULLANILACAKSA ARALARINDA FLUSHPARAMETRE() METODU KULLANILMALI <para /> /// Generic metod oldugu için tiplerin baştan belirtilmesi gerekir. <para /> /// outputs=> gerıye donen output parametreleri<para /> /// Ek-Not: Float==>Single ama Float değerleri doublela karsılamak gerekiyor nedense.<para /> /// </summary> public List <T> SelectSP <T>(string procadi, out List <Dparam> outputs, bool flush = true) { try { var p = new DynamicParameters(); List <T> donenliste = new List <T>(); using (IDbConnection _db = new SqlConnection(Helper.connectionstring())) { foreach (var item in parametreler) { p.Add(item.name, item.value); } foreach (var item in outputparametreler) { p.Add(item.name, dbType: item.dbtype, direction: ParameterDirection.Output); } var returner = _db.Query <T>(procadi, p, commandType: System.Data.CommandType.StoredProcedure); foreach (var item in returner) { donenliste.Add(item); } outputs = new List <Dparam>(); foreach (var item in outputparametreler) { outputs.Add(Dparam.typecaster(p, item.dbtype, item.name)); } } //double a = p.Get<double>("@BORC"); //double b = p.Get<double>("@ALACAK"); return(donenliste); } catch (Exception e) { throw; } finally { if (flush) { FlushParameter(); } } }
public static Dparam typecaster(DynamicParameters p, DbType dbtype, string name) { try { Dparam param = new Dparam(); var x = (dynamic)null; switch (dbtype) { case DbType.Boolean: x = p.Get <bool>(name); param = new Dparam(name, x); break; case DbType.Byte: x = p.Get <byte>(name); param = new Dparam(name, x); break; case DbType.Binary: x = p.Get <byte[]>(name); param = new Dparam(name, x); break; case DbType.DateTime: x = p.Get <DateTime>(name); param = new Dparam(name, x); break; case DbType.DateTimeOffset: x = p.Get <DateTimeOffset>(name); param = new Dparam(name, x); break; case DbType.Decimal: x = p.Get <decimal>(name); param = new Dparam(name, x); break; case DbType.Double: x = p.Get <double>(name); param = new Dparam(name, x); break; case DbType.Single: x = p.Get <float>(name); param = new Dparam(name, x); break; case DbType.Guid: x = p.Get <Guid>(name); param = new Dparam(name, x); break; case DbType.Int16: x = p.Get <short>(name); param = new Dparam(name, x); break; case DbType.Int32: x = p.Get <int>(name); param = new Dparam(name, x); break; case DbType.Int64: x = p.Get <long>(name); param = new Dparam(name, x); break; case DbType.Object: x = p.Get <object>(name); param = new Dparam(name, x); break; case DbType.String: x = p.Get <string>(name); param = new Dparam(name, x); break; case DbType.Time: x = p.Get <TimeSpan>(name); param = new Dparam(name, x); break; case DbType.UInt16: x = p.Get <ushort>(name); param = new Dparam(name, x); break; case DbType.UInt32: x = p.Get <uint>(name); param = new Dparam(name, x); break; case DbType.UInt64: x = p.Get <ulong>(name); param = new Dparam(name, x); break; default: //bos param param = new Dparam(); break; } return(param); } catch (Exception e) { e = e; throw; } }