无法将方法组'Read'转换为非委托类型'bool'

Jas*_*son 7 c# sql sqldatareader

我试图用来SqlDataReader检查条目是否存在.如果它存在,它将返回ID,否则它将返回false.当我尝试编译时,我收到错误"无法将方法组'读'转换为非委托类型'bool'.我一直在关注我在VB中找到的示例,但似乎翻译可能不正确.

private string checkProfileExists()
{
    string strReturn = "False";
    string strSql = ("SELECT ID FROM tblInformation WHERE txtUsername=@UserName " + 
        "AND TrackingID=@TrackingID");
    string strConn = ConfigurationManager.ConnectionStrings["WEM_PassWord_Reset"].
        ConnectionString;


    SqlConnection objConn = new SqlConnection(strConn);
    SqlCommand objCmd = new SqlCommand(strSql, objConn);

    objCmd.Parameters.AddWithValue("@Username", txtUsername.Text);
    objCmd.Parameters.AddWithValue("@TrackingID", txtTrackingID.Text);

    try
    {
        objConn.Open();
        System.Data.SqlClient.SqlDataReader rdr = objCmd.ExecuteReader();

        if (rdr.Read)
        {
            strReturn = rdr("ID").ToString;
        }
        else
        {
            strReturn = "False";
        }
    }
    catch (Exception ex)
    {
        lblErrorMessage.Text = ex.ToString();
    }
    finally
    {
        objConn.Close();
        objCmd = null;
    }

    return strReturn;
}
Run Code Online (Sandbox Code Playgroud)

Aak*_*shM 24

当您在C#错误中看到短语"方法组"时,需要考虑的一个解释是您()从不带参数的方法中省略了括号.在这种情况下,方法是Read你的DataReader.

当编译器看到Read(没有括号)时,它认为你正在讨论方法本身,就好像试图将它分配给委托一样.你实际想要做的是调用方法 - 为了做到这一点,在C#中,你必须给出参数列表(在这种情况下是空的),因此:Read().


mqp*_*mqp 3

if (rdr.Read())
{
    strReturn = rdr["ID"].ToString();
}
Run Code Online (Sandbox Code Playgroud)