日期:2014-05-18  浏览次数:20421 次

小白:大家看一下一个关于ExecuteScalar()的错误。
出现一个错误,请高手指点。
登陆的页面,.cs页面代码如下:
 SqlConnection conn = new SqlConnection("server=.\\SQLEXPRESS;database=bookdata;uid=sa;pwd=xiaobai;");
  SqlCommand cmd = new SqlCommand("select count(id) from userinfo" + "where username='" + TextBoxUid.Text +
  "'and password='" + TextBoxPwd.Text + "'", conn);
  conn.Open();

  int iCount=Convert.ToInt32(cmd.ExecuteScalar());
  if (iCount > 0)
  {

  Response.Redirect("index.aspx");

  }
  else
  {
  LabelErrMsg.Text = "登陆错误";
  }
预览出现错误:'=' 附近有语法错误。
行 25: conn.Open();
行 26: 
行 27: int iCount=Convert.ToInt32(cmd.ExecuteScalar());行 28: if (iCount > 0)
行 29: {

------解决方案--------------------
这句有问题应该要有空格才行:

SqlCommand cmd = new SqlCommand("select count(id) from userinfo " + " where username='" + TextBoxUid.Text + 
"' and password='" + TextBoxPwd.Text + "'", conn);
------解决方案--------------------
这个错误是 sql语句错误。
保证你的TextBox都有值。 且注意你的空格。楼上已经加好。
SqlCommand cmd = new SqlCommand("select count(id) from userinfo " + " where username='" + TextBoxUid.Text + 
"' and password='" + TextBoxPwd.Text + "'", conn);
------解决方案--------------------
//学会用参数而不是拼接SQL语句
SqlCommand cmd = new SqlCommand("select count(id) from userinfo where username= @username and [password] = @password", conn);
cmd.Parameters.AddWithValue("@username", TextBoxUid.Text);
cmd.Parameters.AddWithValue("@password", TextBoxPwd.Text);