System.Data.OleDb.OleDbCommand cmd = null;//comand
System.Data.OleDb.OleDbDataReader rd =null; //reader
            
string strSql = "select * from t_gbit_login where c_id='"+strID.Trim()+"'"; try
{
cmd = new System.Data.OleDb.OleDbCommand(strSql,oleConn);
rd=cmd.ExecuteReader();
if(rd.Read())
{
strName=rd["c_name"].ToString().Trim();
strSex=rd["c_sex"].ToString().Trim();
strRight=rd["c_right"].ToString().Trim();
strPwd=rd["c_pwd"].ToString().Trim();
iRows++;
}
}
catch(System.Exception eee)
{
strErrorMsg="查询身份验证信息失败,错误信息:"+eee.Message;
return false;
}
finally
{
rd.Close();
cmd.Dispose();
oleConn.Close();

}

解决方案 »

  1.   

    执行到finally里的rd.Close()时,程序就死掉了,不响应任何消息
      

  2.   

    如果是要循环的话, if---〉 while
      

  3.   

    strName=rd["c_name"].ToString().Trim();
    这个也不对,rd的数据库的记录,不能使用Trim();,直接ToString()就够了
      

  4.   

    同样的语句我连接oracle数据库是一点问题也没有的
    连接sybase数据才产生的问题
      

  5.   

    把try...finally注释掉,看看报什么异常
      

  6.   

    为什么要调用cmd.Dispose?OleDbCommand没有非托管资源吧?
      

  7.   

    还没有执行到cmd.Dispose()呢
    执行到rd.Close();不卡死了
      

  8.   

    还有我的程序连接oracle就是没有问题的,一切都正常
    连接到sybase12.5的时候,数据也能查出来,就是卡死到rd.Close()那里了,
    只有把网络断开,它才会向下执行
      

  9.   

    单步执行下
    catch再过滤的细点
      

  10.   

    没有产生任何异常和错误,执行到rd.Close() 的时候,就象进入死循环一样
      

  11.   

    System.Data.OleDb.OleDbCommand cmd = null;//comand
    System.Data.OleDb.OleDbDataReader rd =null; //reader
                
    string strSql = "select * from t_gbit_login where c_id='"+strID.Trim()+"'";try
    {
    cmd = new System.Data.OleDb.OleDbCommand(strSql,oleConn);
    rd=cmd.ExecuteReader();
    while(rd.Read())
    {
    strName=rd["c_name"].ToString().Trim();
    strSex=rd["c_sex"].ToString().Trim();
    strRight=rd["c_right"].ToString().Trim();
    strPwd=rd["c_pwd"].ToString().Trim();
    iRows++;
    }
    rd.Close();
    }
    catch(System.Exception eee)
    {
    strErrorMsg="查询身份验证信息失败,错误信息:"+eee.Message;
    return false;
    }
    finally
    {
    try
    {
    cmd.Dispose();
    oleConn.Close();
    }
    catch
    {}
    }
      

  12.   

    感谢楼上的帮我优化代码问题的关键是执行到rd.Close()就停住了,不向下执行,就象是进入死循环一样