A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林嘉健 中级黑马   /  2013-1-12 19:43  /  2306 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 林嘉健 于 2013-1-12 21:30 编辑
  1. using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;
  2. Integrated Security=True;User Instance=True"))
  3.         {
  4.             conn.Open();
  5.             using (SqlCommand cmd = conn.CreateCommand())
  6.             {
  7.                 cmd.CommandText = "select * from t_User where Username = @username and Password = @userpassword";
  8.                 cmd.Parameters.Add(new SqlParameter("username", strName));
  9.                 cmd.Parameters.Add(new SqlParameter("userpassword", strPwd));
  10.                 DataSet dataset = new DataSet();
  11.                 SqlDataAdapter ada = new SqlDataAdapter(cmd);
  12.                 ada.Fill(dataset);
  13.                 DataTable table = dataset.Tables[0];
  14.                 for (int i = 0; i < table.Rows.Count; i++)
  15.                 {
  16.                     DataRow row = table.Rows[i];
  17.                     string dbpassword = Convert.ToString(row["userpassword"]);
  18.                     if (dbpassword == strPwd)
  19.                     {

  20.                         Response.Write("<script>alert('登录成功')</script>");
  21.                         Session["pageusername"] = strName;
  22.                         Session["pageuserpassword"] = strPwd;
  23.                         Server.Transfer("buy.aspx");

  24.                     }

  25.                     //string dbpassword = Convert.ToString(row["userpassword"]);
  26.                     Response.Write(dbpassword);
  27.                 }
  28.             }
  29.         }
复制代码
用到的是参数化查询,代码也是跟着视频敲的。各种无奈

Petshop.jpg (45.23 KB, 下载次数: 40)

Petshop.jpg

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

9 个回复

倒序浏览
                cmd.Parameters.Add(new SqlParameter("username", strName));

                cmd.Parameters.Add(new SqlParameter("userpassword", strPwd));

上面两句话 有问题吧, 第一 @ 符号不要省。。 第二, strName  strPwd 是字符串吗?? 还是 控件名??

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 林嘉健 于 2013-1-12 20:13 编辑
王继光 发表于 2013-1-12 19:55
cmd.Parameters.Add(new SqlParameter("username", strName));

                cmd.Para ...


字符串呢 我忘记复制上面的代码了。。

  1. <BLOCKQUOTE>
复制代码
  1. protected void Button1_Click(object sender, EventArgs e)
  2. {
  3. //传递form表单里各节点的数据并获得(post方式)
  4. string strName = Request.Form["txtName"];
  5. string strPwd = Request.Form["txtPwd"];
  6. object objectName = null;
  7. if (strName.Length <= 0)
  8. {
  9. objectName = DBNull.Value;
  10. }
  11. else
  12. {
  13. objectName = strName;
  14. }
  15. object objectPwd = null;
  16. if (strPwd.Length <= 0)
  17. {
  18. objectPwd = DBNull.Value;
  19. }
  20. else
  21. {
  22. objectPwd = strPwd;
  23. }

  24. using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;
  25. Integrated Security=True;User Instance=True"))
  26. {
  27. conn.Open();
  28. using (SqlCommand cmd = conn.CreateCommand())
  29. {
  30. cmd.CommandText = "select * from t_User where Username = @username and Password = @userpassword";
  31. cmd.Parameters.Add(new SqlParameter("@username", strName));
  32. cmd.Parameters.Add(new SqlParameter("@userpassword", strPwd));
  33. DataSet dataset = new DataSet();
  34. SqlDataAdapter ada = new SqlDataAdapter(cmd);
  35. ada.Fill(dataset);
  36. DataTable table = dataset.Tables[0];
  37. for (int i = 0; i < table.Rows.Count; i++)
  38. {
  39. DataRow row = table.Rows[i];
  40. string dbpassword = Convert.ToString(row["userpassword"]);
  41. if (dbpassword == strPwd)
  42. {

  43. Response.Write("<script>alert('登录成功')</script>");
  44. Session["pageusername"] = strName;
  45. Session["pageuserpassword"] = strPwd;
  46. Server.Transfer("buy.aspx");

  47. }

  48. //string dbpassword = Convert.ToString(row["userpassword"]);
  49. Response.Write(dbpassword);
  50. }
  51. }
  52. }
  53. }
复制代码
回复 使用道具 举报
你把解决方案 打包给我看一下。

点评

我先试试楼下这同学的思路哦  发表于 2013-1-12 20:24
回复 使用道具 举报
或许是你表单传过来的值为空值,而在参数化查询里,如果值为null,则表示“没有提供参数的值”。

这样是会报错的!

你可以判断一下是否为空,如果为空,则把DBNull赋值给你所要传进去的变量。注意DBNull和你要传进去的变量的数据类型!

点评

大牛啊  发表于 2013-1-12 21:29

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
搞了个断点,post表单传过来的是空值。

我就郁闷了 为什么会是空值呢。

原来我把代码写在了 Page_load里了- -
回复 使用道具 举报
郝滨 中级黑马 2013-1-12 21:33:45
7#
{:soso_e134:}看了十分钟呀 囧 不是很明白  难道是SQL的连接问题?
回复 使用道具 举报
王继光 发表于 2013-1-12 19:55
cmd.Parameters.Add(new SqlParameter("username", strName));

                cmd.Para ...

学长能解释一下为什么要+@吗? 我看杨老师的视频有时候是+, 有时候是不加的。

我这边试了一下 +@ 和 不+@ 都能编译通过哦,并且功能可以实现。
回复 使用道具 举报
郝滨 发表于 2013-1-12 21:33
看了十分钟呀 囧 不是很明白  难道是SQL的连接问题?

打算进第6期.NET黑马吗?
回复 使用道具 举报
ykrh 中级黑马 2013-1-14 23:00:41
10#
打断点调试一下就出来了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马