类型"System.Data.SqlClient.SqlDataReader"未定义构造函数



我在使用SqlDataReader时遇到问题。当我尝试运行页面时,我收到错误"类型'系统.数据.SqlClient.SqlDataReader'没有定义构造函数"。我在这里的目的是在用户没有访问权限时返回一个字符串值 0,或者在用户评估时返回 1。下面是我的代码片段。

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;
}

从 SqlDataReader 声明中删除 New。

试试这个:

更改此内容

SqlDataReader readAssess;
    readAssess = new SqlDataReader();

SqlDataReader readAssess;

SqlDataReader

SqlDataReader 类没有构造函数,请将代码重写为:

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;
}

尝试类似操作:

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;
}

我已将您的 SqlDataReader 实例化更改为您执行查询的行与MSDN的此示例相同

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

Chang your

 readAssess = new SqlDataReader ();
 readAssess = cmdReadAssess.ExecuteReader();

 SqlDataReader readAssess= cmdReadAssess.ExecuteReader();

SqlDataReader 类

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.

最新更新