ExecuteReader: CommandText 属性尚未初始化
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: ExecuteReader: CommandText 属性尚未初始化源错误:
行 36: SqlCommand cmd = new SqlCommand(selectStr, conn);
行 37: conn.Open();
行 38: SqlDataReader sdr = cmd.ExecuteReader();
行 39: if (sdr.Read())
行 40: {
源文件: d:\ASP.NET网站设计\WebSite\Login.aspx.cs 行: 38
CommandText
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: ExecuteReader: CommandText 属性尚未初始化源错误:
行 36: SqlCommand cmd = new SqlCommand(selectStr, conn);
行 37: conn.Open();
行 38: SqlDataReader sdr = cmd.ExecuteReader();
行 39: if (sdr.Read())
行 40: {
源文件: d:\ASP.NET网站设计\WebSite\Login.aspx.cs 行: 38
CommandText
放在第36行和第37行中间还是提示:CommandText 属性尚未初始化
啊!!!
行 37: conn.Open();
换成这样
conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = selectStr;
selectStr有值吧?
string selectStr="";
断点了一下selectStr为空。
不懂
如果将:
行 36: SqlCommand cmd = new SqlCommand(selectStr, conn);
行 37: conn.Open();
换成这样
conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = selectStr;
那不是一样吗?况且cmd又没有类型了。
不能那么该呀;下边是全部代码,请看:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
string userName = txtUserName.Text.ToString().Trim();
string userPwd = txtPwd.Text.ToString().Trim();
string userRole = rblClass.Text.ToString().Trim();
string selectStr="";
switch (userRole)
{
case "0":
selectStr = "Select * from 教师 where =教师号'" + userName + "'";
break;
case "1":
selectStr = "Select * from 学生 where 学号='" + userName + "'";
break;
case "2":
selectStr = "Select * from 管理员 where 管理员账号='" + userName + "'";
break;
}
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand(selectStr, conn);
cmd.CommandType = CommandType.Text;
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
{
if (sdr.GetString(1) == userPwd)
{
Session["userName"] = userName;
Session["userRole"] = userRole;
conn.Close();
switch (userRole)
{
case "0":
Response.Redirect("teacherCourseDatails.aspx");
break;
case "1":
Response.Redirect("studentQueryScore.aspx");
break;
case "2":
Response.Redirect("Main.aspx");
break;
}
}
else
{
lblMessage1.Text = "您输入的密码错误,请检查后重新输入!";
}
}
else
{
lblMessage1.Text = "该用户不存在或用户名输入错误,请检查后重新输入!";
} conn.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Write("<a href='javascript:window.opener=null;window.close()'>关闭窗口</a>");
}
protected void txtPwd_TextChanged(object sender, EventArgs e)
{ }
}
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = selectStr;
SqlCommand cmd = new SqlCommand(selectStr, conn);
conn.Open();
我所建的表有管理员、教师、学生。这个table着实是没法写,代码在#7,下边是控件截图: