.net 关闭或释放我的DataReader或SqlConnection

.net 关闭或释放我的DataReader或SqlConnection,.net,sql-server,sqldatareader,sqlconnection,datareader,.net,Sql Server,Sqldatareader,Sqlconnection,Datareader,我有以下代码从表中检索列名 康涅狄格州公开赛 usingSqlCommand cmd=newsqlcommandcolquery,conn { 尝试 { 使用sqldatareader dr=cmd.ExecuteReader { 里德博士; var columns=新列表; 对于int i=0;i

我有以下代码从表中检索列名

康涅狄格州公开赛 usingSqlCommand cmd=newsqlcommandcolquery,conn { 尝试 { 使用sqldatareader dr=cmd.ExecuteReader { 里德博士; var columns=新列表; 对于int i=0;i 或者连接超时,出现“内部连接致命错误。错误状态:15,令牌:0”00:00:31.1460115

如何正确关闭此连接并移出使用块?

一般结构:

using conn = new SqlConnection(...) {
    conn.Open();
    using cmd = new SqlCommand(conn) {
        dr = cmd.ExecuteReader();
        while (dr.read) {
            // do stuff
        }
    }
}

将using块添加到您的SqlConnection中,删除所有关闭调用,您应该注意using块是执行此操作的正确方法。缺少一件事:@Steve so将所有内容包装到usingconn.Open{…}?@user1443098这是Steve提到的一件事吗?关闭连接需要多长时间?退出using块需要将近15分钟。这取决于do stuff中的内容。可能是毫秒或天。这只是上面代码块中的内容。遍历列名。这取决于表大小吗?是的,它会,正如所写的那样。Loo就像你想要表模式一样。ExecuteReader选项CommandBehavior.SchemaOnly可以让你得到它。那么你就不需要while循环了