Method that returns DataReader -- will it cause resource leaks? <p>Say I have the following code:</p> <pre><code>private AdomdDataReader ExecuteReader(string query) { var conn = new AdomdConnection(ConnectionString); conn.Open(); var cmd = new AdomdCommand(query, conn); cmd.Parameters.Add("Foo", "Bar"); return cmd.ExecuteReader(CommandBehavior.CloseConnection); } </code></pre> <p>Then in usage, you'd wrap the reader in a <code>using</code> statement:</p> <pre><code>using (var reader = ExecuteReader("...")) ... </code></pre> <p>This would be in contrast to manually opening a connection and executing a reader each time:</p> <pre><code>using(var conn = new AdomdConnection(ConnectionString)) { conn.Open(); using(var cmd = new AdomdCommand(query, conn)) { cmd.Parameters.Add("Foo", "Bar"); var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); ... } } </code></pre> <p>So I'm basically just trying to reduce boilerplate for reading many similar queries from a database. Am I exposing myself to resource leaks by doing so?</p>