/// <summary> /// Executes a select query using a DataAdapter and returns data using the provided data reader extractor. /// </summary> /// <typeparam name="T"> the type of the data to return</typeparam> /// <param name="query">the parsed query</param> /// <param name="extractor">the data reader mapper used to extract data</param> /// <param name="parameterSource">a parameter source that holds the parameter values for the query</param> /// <returns>the extracted data</returns> public T Select<T>(ParsedQuery query, DataReaderExtractor<T> extractor, IQueryParameterSource parameterSource = null) { var table = new DataTable(); using (var dataAdapter = ConnectionProvider.ProviderFactory.CreateDataAdapter()) using (var command = GetCommand(query.SubstitutedQuery)) { dataAdapter.SelectCommand = command; SetParameters(command, query, parameterSource); dataAdapter.Fill(table); } return extractor(new DataTableReader(table)); }
/// <summary> /// Executes a select query using a DataAdapter and returns data using the provided data reader extractor. /// </summary> /// <typeparam name="T"> the type of the data to return</typeparam> /// <param name="query">the SQL query</param> /// <param name="extractor">the data reader mapper used to extract data</param> /// <param name="parameterSource">a parameter source that holds the parameter values for the query</param> /// <returns>the extracted data</returns> public T Select<T>(string query, DataReaderExtractor<T> extractor, IQueryParameterSource parameterSource = null) { var parsedQuery = new ParsedQuery(query, ConnectionProvider.PlaceholderGetter); return Select(parsedQuery, extractor, parameterSource); }
/// <summary> /// Executes a select query using a DataAdapter and returns data using the provided data reader extractor. /// </summary> /// <typeparam name="T"> the type of the data to return</typeparam> /// <param name="query">the SQL query</param> /// <param name="extractor">the data reader mapper used to extract data</param> /// <param name="parameters">the parameters of the query</param> /// <returns>the extracted data</returns> public T Select<T>(string query, DataReaderExtractor<T> extractor, IDictionary<string, object> parameters) { return Select(query, extractor, new DictionaryParameterSource { Parameters = parameters }); }