/// <summary> /// Executes a SELECT statement against the database and returns a disconnected data table. NOTE: Use this overload to work with Typed DataSets. /// </summary> /// <param name="selectQuery">The query to be executed against the database</param> /// <param name="dataTable">Table that will contain the result</param> /// <returns>A data table object</returns> public override DataTable Select(Query selectQuery, DataTable dataTable) { #region Input Validation if (selectQuery == null) { throw new ArgumentNullException("selectQuery"); } if (dataTable == null) { throw new ArgumentNullException("dataTable"); } #endregion Input Validation if (selectQuery.SqlStatement.Contains("TOP 2")) { selectQuery = CreateQuery(selectQuery.SqlStatement.Replace("TOP 2 ", string.Empty).Replace(";",string.Empty) + " LIMIT 2"); } if (selectQuery.SqlStatement.Contains("[")) { selectQuery = CreateQuery(selectQuery.SqlStatement.Replace("[", string.Empty).Replace("]", string.Empty)); } IDbConnection connection = GetConnection(connectionString); NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(); adapter.SelectCommand = (NpgsqlCommand)GetCommand(selectQuery.SqlStatement, connection, selectQuery.Parameters); try { //Logger.Log(selectQuery); adapter.Fill(dataTable); adapter.FillSchema(dataTable, SchemaType.Source); return dataTable; } catch (Exception ex) { throw new System.ApplicationException("Error executing select query against the database.", ex); } }