我在使用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.