The type 'System.Data.SqlClient.SqlDataReader' has no constructors defined

感情迁移 提交于 2020-01-24 22:24:50

问题


I have issues with SqlDataReader. I get the error "The type 'System.Data.SqlClient.SqlDataReader' has no constructors defined" when I try running the page. My intention here is to return a string value 0 if the user has not had access or 1 when the user has assess. Below is my code snippet.

public string CheckAssess(string emailAddress, string columnName)
{
    string chkAssess;
    SqlDataReader readAssess;
    readAssess = new SqlDataReader();

    string MgrAssessQry = "SELECT '"+columnName+"' FROM tblAllUsers";
    MgrAssessQry += " WHERE email ='" + emailAddress + "'";

    SqlCommand cmdReadAssess = new SqlCommand(MgrAssessQry, cn);
    cn.Open();
    readAssess = cmdReadAssess.ExecuteReader();

    while(readAssess.Read())
    {
        // Add the rows
       chkAssess = readAssess["IsAssessMgr"].ToString();
    }

    return chkAssess;
}

回答1:


Try something like:

public string CheckAssess(string emailAddress, string columnName)
{
    string chkAssess;

    string MgrAssessQry = "SELECT '"+columnName+"' FROM tblAllUsers";
    MgrAssessQry += " WHERE email ='" + emailAddress + "'";

    SqlCommand cmdReadAssess = new SqlCommand(MgrAssessQry, cn);
    cn.Open();
    SqlDataReader readAssess = cmdReadAssess.ExecuteReader();

    while(readAssess.Read())
    {
        // Add the rows
       chkAssess = readAssess["IsAssessMgr"].ToString();
    }

    return chkAssess;
}

I have changed your SqlDataReader instantiation to the line where you execute the query Same way like in this example from MSDN

http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx




回答2:


Remove New from SqlDataReader Declaration.

Try this:

Change this

SqlDataReader readAssess;
    readAssess = new SqlDataReader();

to

SqlDataReader readAssess;

SqlDataReader




回答3:


The SqlDataReader class has no constructors, rewrite your code to following:

public string CheckAssess(string emailAddress, string columnName)
{
    string chkAssess;
    SqlDataReader readAssess;
    string MgrAssessQry = "SELECT '"+columnName+"' FROM tblAllUsers WHERE email ='" + emailAddress + "'";
    SqlCommand cmdReadAssess = new SqlCommand(MgrAssessQry, cn);

    cn.Open();
    readAssess = cmdReadAssess.ExecuteReader();

    while(readAssess.Read())
    {
        chkAssess = readAssess["IsAssessMgr"].ToString();
    }

    return chkAssess;
}



回答4:


Chang your

 readAssess = new SqlDataReader ();

 readAssess = cmdReadAssess.ExecuteReader();

to

 SqlDataReader readAssess= cmdReadAssess.ExecuteReader();

SqlDataReader Class




回答5:


I had the same problem. I resolved by a simple way like this.

SqlDataReader read = null;
and to check 'read' has row or not
if(read.HasRows)
{
   while(read.Read()){}
}


So please see this your code.

public string CheckAssess(string emailAddress, string columnName)
{
    string chkAssess;
    SqlDataReader readAssess;
    readAssess = null; // this from my comments

    string MgrAssessQry = "SELECT '"+columnName+"' FROM tblAllUsers";
    MgrAssessQry += " WHERE email ='" + emailAddress + "'";

    SqlCommand cmdReadAssess = new SqlCommand(MgrAssessQry, cn);
    cn.Open();
    readAssess = cmdReadAssess.ExecuteReader();

    if(readAssess.HasRows && readAssess != null) // this from my comments
    {
       while(readAssess.Read())
       {
          // Add the rows
          chkAssess = readAssess["IsAssessMgr"].ToString();
       }
     }

     return chkAssess;
 }

 // I hope this code would help you.


来源:https://stackoverflow.com/questions/22169519/the-type-system-data-sqlclient-sqldatareader-has-no-constructors-defined

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!