/// <summary> /// Gönderilen Sql Sorgusunu çalıştırıp istenilen türde (T) geri döndürür. /// </summary> /// <typeparam name="T">Geri Dönüş Tipi; NewsList, List NewsList>, DbNull, int, string, boolen, DateTime, Byte, Char, Array(int[], string[], boolen[],DataTime[]...)...</typeparam> /// <param name="SQLQuery">Çalıştırılacak Sql Sorgusu</param> /// <param name="CacheInSecond">Saniye cinsinden Cache Süresi, 0 gönderilirse Cache'e atmaz, Default değeri 0</param> /// <param name="cmdType">CommandType enum</param> /// <returns>T Türünü döndürür</returns> public T ExecuteQuery <T>(string SQLQuery, int CacheInSecond = 0, CommandType cmdType = CommandType.Text) { string CacheName = MemoryCache.GetMemoryCacheName(SQLQuery + "; " + cmdType + "; " + typeof(T), Parameters); if (CacheInSecond > 0 && MemoryCache.IsInMemoryCache(CacheName)) { return((T)MemoryCache.GetMemoryCache(CacheName)); } else { if (HttpContext.Current.Request.QueryString["DatacacheControl"] != null && HttpContext.Current.Request.QueryString["DatacacheControl"].ToString() == "1") { HttpContext.Current.Response.Write(SQLQuery);//CACHE OLMAYAN YER VAR MI KONTROLÜ } SqlCommand cmd = new SqlCommand(); SqlConnection dbConn = new SqlConnection(GetSqlConnectionString(DatabaseType)); cmd.Connection = dbConn; cmd.CommandType = cmdType; cmd.CommandText = SQLQuery; if (Parameters != null) { cmd.Parameters.AddRange(Parameters.ToArray()); } T ReturnObject = default(T); if (dbConn.State != ConnectionState.Open) { dbConn.Open(); } #region FillReturnObject #region T>DBNULL if (typeof(T) == typeof(DBNull)) { try { cmd.ExecuteNonQuery(); } catch { string dsds = "ds"; } } #endregion T>NULL #region T>NameSpace: "System" else if (typeof(T).Namespace == "System") { if (typeof(T).IsArray) { SqlDataReader dr = cmd.ExecuteReader(); ReturnObject = dr.Ext_MappingToArray <T>(); } else { object ObjectReturn = cmd.ExecuteScalar(); if (ObjectReturn != null) { ReturnObject = (T)Convert.ChangeType(ObjectReturn, typeof(T)); } } } #endregion T>NameSpace: "System" #region T>Type:DataSet else if (typeof(T) == typeof(DataSet)) { using (SqlDataAdapter DA = new SqlDataAdapter(cmd)) { DataSet DS = new DataSet(); DA.Fill(DS); ReturnObject = (T)Convert.ChangeType(DS, typeof(T)); } } #endregion T>Type:DataSet #region T>Type:DataTable else if (typeof(T) == typeof(DataTable)) { using (SqlDataAdapter DA = new SqlDataAdapter(cmd)) { DataTable DT = new DataTable(); DA.Fill(DT); ReturnObject = (T)Convert.ChangeType(DT, typeof(T)); } } #endregion T>Type:DataTable #region T>Type:DataRow else if (typeof(T) == typeof(DataRow)) { using (SqlDataAdapter DA = new SqlDataAdapter(cmd)) { DataTable DT = new DataTable(); DA.Fill(DT); if (DT.Rows.Count > 0) { ReturnObject = (T)Convert.ChangeType(DT.Rows[0], typeof(T)); } } } #endregion T>Type:DataRow #region T>Type:DataColumn else if (typeof(T) == typeof(DataColumn)) { using (SqlDataAdapter DA = new SqlDataAdapter(cmd)) { DataTable DT = new DataTable(); DA.Fill(DT); if (DT.Rows.Count > 0) { ReturnObject = (T)Convert.ChangeType(DT.Rows[0][0], typeof(T)); } } } #endregion T>Type:DataColumn #region T>Type:EntityObject else if (typeof(T).IsClass) { SqlDataReader dr = cmd.ExecuteReader(); ReturnObject = dr.Ext_MappingToEntityObject <T>(); } #endregion T>Type:EntityObject #endregion FillReturnObject dbConn.Close(); cmd.Parameters.Clear(); cmd.Connection.Close(); cmd.Connection.Dispose(); cmd.Dispose(); dbConn.Dispose(); if (CacheInSecond > 0) { MemoryCache.AddMemoryCache(ReturnObject, CacheName, CacheInSecond); } return(ReturnObject); } }