using System.Text; using MySql.Data.MySqlClient; using MarketData.MarketDataModel; using MarketData.Utils; namespace MarketData.DataAccess { public class CurrencyConversionDA { private CurrencyConversionDA() { } // get the maximum date on record on or before asof. If maxDate turns out to be less than asof then return null public static DateTime? GetMaxDateForCurrency(String sourceCurrency,String destinationCurrency,DateTime asof) { MySqlConnection sqlConnection = null; MySqlDataReader sqlDataReader = null; MySqlCommand sqlCommand=null; String strQuery = null; DateTime? maxDate=null; try { StringBuilder sb = new StringBuilder(); sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data")); sb.Append("select asof from CurrencyConversion "); sb.Append(" where "); sb.Append("source_currency=").Append("'").Append(sourceCurrency).Append("'").Append(" "); sb.Append("and ").Append(" destination_currency=").Append("'").Append(destinationCurrency).Append("'").Append(" "); sb.Append("and asof<=").Append("'").Append(Utility.DateTimeToStringYYYYHMMHDD(asof)).Append("'"); sb.Append(" order by asof desc "); sb.Append(" limit 1"); strQuery = sb.ToString(); ; sqlCommand = new MySqlCommand(strQuery, sqlConnection); sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT; sqlDataReader = sqlCommand.ExecuteReader(); if (!sqlDataReader.Read()) return maxDate; if(!sqlDataReader.IsDBNull(0))maxDate=sqlDataReader.GetDateTime(0); if(maxDate