行/列中没有数据

| 使用C#在ASP.NET中执行以下代码时,出现了类似“没有行/列的数据”的异常。
OdbcConnection DbConnection = new   OdbcConnection(ConfigurationManager.AppSettings[\"ConnectionStr\"]);        
DbConnection.Close();        
string cmdText = \"SELECT Team_ID FROM team_details WHERE Team_Code=?\";        
OdbcCommand cmd = new OdbcCommand(cmdText, DbConnection);
cmd.Parameters.Add(\"?Code\", OdbcType.VarChar).Value = tbCode.Text;
DbConnection.Open();
OdbcDataReader DR = cmd.ExecuteReader();
DR.Read();        
if (DR.GetValue(0) != DBNull.Value)        
{
    args.IsValid = false;
}
else
{
    args.IsValid = true;
}
DbConnection.Close();
我正在使用Visual Studio 2008和MySQL。我正在使用MySql ODBC连接器5.1和MDAC2.8。 请指导我如何解决此问题。     
已邀请:
        Read方法返回一个布尔值,指示是否返回任何行,因此,在访问读取器的结果之前,应始终测试此值。
  OdbcDataReader DR = cmd.ExecuteReader();



if (DR.Read() && DR.GetValue(0) != DBNull.Value)    
 {   
    args.IsValid = false; 
 } 
 else 
 {   
     args.IsValid = true; 
 } 
 DbConnection.Close();
编辑---- 您还应该考虑“ 2”个连接,因为即使在using语句中发生异常,这也将确保关闭(放置)。 您也可以摆脱
if
陈述,但这是一个品味问题。 最后,标准.NET习惯用法是将连接字符串保留在web.config的ConnectionStrings部分中。下面未显示。
   using(OdbcConnection DbConnection = new  OdbcConnection(ConfigurationManager.AppSettings[\"ConnectionStr\"]))
   {
          string cmdText = \"SELECT Team_ID FROM team_details WHERE Team_Code=?\";        
          OdbcCommand cmd = new OdbcCommand(cmdText, DbConnection);
          cmd.Parameters.Add(\"?Code\", OdbcType.VarChar).Value = tbCode.Text;
          DbConnection.Open();
          OdbcDataReader DR = cmd.ExecuteReader();
          args.IsValid = DR.Read() && DR.GetValue(0) != DBNull.Value;
   }
    
        在经历了很多错误之后,我发现了一些隐藏的东西: 我将连接对象声明为公共变量。然后,我通过几个功能使用它,并且有一次我决定不重置它的连接字符串,因为它已由前面的过程设置。 随后的函数在循环访问由公共连接对象设置的表时调用了先前的函数,因此在先前的函数返回其值和CLOSED ITS CONNECTION OBJECT(这是两个函数共享的公共对象)后,失去了连接。 )! 我希望这是有道理的...花了我几个小时才能弄清楚发生了什么。     

要回复问题请先登录注册