c# – 我正在处理我的ODBCConnection
发布时间:2020-12-15 23:59:15 所属栏目:百科 来源:网络整理
导读:我正在使用这样的辅助方法: private OdbcCommand GetCommand(string sql) { string conString = "blah"; var con = new OdbcConnection(conString); var cmd = new OdbcCommand(sql,con); return cmd; } 然后我像这样使用它: using (var cmd = GetCommand(
我正在使用这样的辅助方法:
private OdbcCommand GetCommand(string sql) { string conString = "blah"; var con = new OdbcConnection(conString); var cmd = new OdbcCommand(sql,con); return cmd; } 然后我像这样使用它: using (var cmd = GetCommand("select * from myTable") { cmd.connection.open(); using(var reader = cmd.ExecuteReader()) { } } 这是第二个例子: public static OdbcDataReader GetReader(string conString,string sql) { var cmd = GetCommand(conString,sql); cmd.Connection.Open(); return cmd.ExecuteReader(); } 像这样使用: using(var reader = GetReader("blah","select * from blah") { } 在这两种情况下,我处理连接和cmd对象?我认为连接没有被放在第一个,第二个连接和cmd都没有,是吗? 我是否需要做很长的事情来确保正确处理,或者是否有更短的方法? using (var con ...) using (var cmd) using (var reader) 解决方法
对于将Reader包装在using块中的两个示例,如果使用接受CommandBehavior的覆盖并将其设置为“CloseConnection”,则将关闭与现有代码的连接
using(var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)){} 见http://msdn.microsoft.com/en-us/library/s9bz2k02.aspx Microsoft知道在阅读器被占用时连接必须保持打开状态,因此创建了在关闭Reader时关闭连接的选项. 您是正确的,在第二个示例中该命令没有被处置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |