主要学习代码:

Login.aspx:

  1. <!--第一种方式-->
  2. <%-- <script type="text/javascript">
  3. function Go() {
  4. var name = document.getElementById("txtName");
  5. var pwd = document.getElementById("txtPwd");
  6. var code = document.getElementById("txtCode");
  7. if (name.value == "") {
  8. alert("请输入用户名");
  9. }
  10. else if (pwd.value == "") {
  11. alert("请输入密码");
  12. }
  13. else if (code.value == "") {
  14. alert("请输入验证码");
  15. }
  16. else {
  17. //哈哈,不知道怎么了这里用不了链式编程了
  18. var btn = document.getElementById("btnLogin");
  19. btn.setAttribute("type", "submit");
  20. btn.onsubmit;
  21. }
  22. };
  23. </script>--%>
  24. <script type="text/javascript">
  25. function Go() {
  26. var name = document.getElementById("txtName");
  27. var pwd = document.getElementById("txtPwd");
  28. var code = document.getElementById("txtCode");
  29. if (name.value == "") {
  30. alert("请输入用户名");
  31. return false;
  32. }
  33. else if (pwd.value == "") {
  34. alert("请输入密码");
  35. return false;
  36. }
  37. else if (code.value == "") {
  38. alert("请输入验证码");
  39. return false;
  40. }
  41. return true;
  42. };
  43. </script>
  44. <style type="text/css">
  45. .input {
  46. font-size: 16px;
  47. width: 150px;
  48. margin: 3px;
  49. vertical-align: text-bottom;
  50. }
  51. </style>
  52. </head>
  53. <body>
  54. <div id="Login" style="width: 350px; height: 150px; background-color: #00ff21; padding: 5px; position:fixed;top:50%;left:50%;margin:-100px 0 0 -175px;">
  55. <form method="post" action="Login.aspx">
  56. 用户名:<input class="input" type="text" name="txtName" id="txtName" /><br />
  57. 密&nbsp;&nbsp;码:<input class="input" type="password" name="txtPwd" id="txtPwd" /><br />
  58. 验证码:<input class="input" type="text" name="txtCode" id="txtCode" /><img src="VerifyCode.ashx" onclick="this.src='VerifyCode.ashx?times='+new Date();" title="点击更换验证码" alt="验证码" style="height: 40px; margin-left: 10px;" /><br />
  59. <div style="float: left; margin: 8px;">
  60. <!--第一种方式-->
  61. <%--<input type="button" value="登录" id="btnLogin" onclick="Go()"/>--%><!--不能用submit作为名字--><input type="checkbox" name="chkAuto" id="chkAuto" /><label for="chkAuto">一周内自动登录</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="登录" onclick="return Go()" style="margin-right: 18px; float: right;" />
  62. </div>
  63. </form>
  64. </div>
  65. </body>

Login.aspx.cs

  1. public partial class Login : System.Web.UI.Page
  2. {
  3. Web.BLL.TransferAction action = null;
  4. protected void Page_Load(object sender, EventArgs e)
  5. {
  6. //刷新登录。。。
  7. string name, code, pwd;
  8. code = Request.Form["txtCode"];
  9. if (null == Request.Cookies["cName"] && Request.Cookies["cPwd"] == null)
  10. {
  11. if (code != null)
  12. {
  13. if (code == Session["code"].ToString().ToLower())
  14. {
  15. name = Request.Form["txtName"];
  16. pwd = Request.Form["txtPwd"];
  17. action = new Web.BLL.TransferAction();
  18. if (action.IsExist(name, pwd))
  19. {
  20. if (Request.Form["chkAuto"] != null)//选中 on
  21. {
  22. //实际(加密[user+Identity+key+...])并不是这样实现自动登录的,只是简单原理仅供学习。
  23. HttpCookie cookieName = new HttpCookie("cName", name);
  24. HttpCookie cookiePwd = new HttpCookie("cPwd");
  25. cookiePwd.Value = pwd;
  26. cookiePwd.Expires = DateTime.Now.AddMinutes();
  27. cookieName.Expires = DateTime.Now.AddMinutes();
  28. Response.Cookies.Add(cookieName);
  29. Response.Cookies.Add(cookiePwd);//已经向浏览器发送了Cookie。
  30. }
  31. Session["name"] = name;
  32. // Response.Cookies.Add(cookiePwd);后UrlReferrer不为null
  33. Response.Redirect("List.aspx");
  34. }
  35. else
  36. {
  37. Response.Write("<script>alert(\"用户名或密码错误。\");</script>");
  38. }
  39. }
  40. else
  41. {//向浏览器输出js脚本
  42. //// 第一个参数产生随机键
  43. //但是必须是<form runat="server" />
  44. //Page.ClientScript.RegisterClientScriptBlock(this.GetType(), Guid.NewGuid().ToString(), "alert(\"验证码错误。\");", true);
  45. //Page.ClientScript.registerstartupscript(this.gettype(), guid.newguid().tostring(), "alert(\"验证码错误。\");", true);
  46. Response.Write("<script>alert('验证码错误')</script>");
  47. }
  48. }
  49. }
  50. else
  51. {
  52. action = new Web.BLL.TransferAction();
  53. if (action.IsExist(Request.Cookies["cName"].Value, Request.Cookies["cPwd"].Value))
  54. {
  55. Session["name"] = Request.Cookies["cName"].Value;
  56. //这里没有向浏览器输出任何东西,所以List的UrlReferrer为null
  57. //Response.Redirect("List.aspx");
  58. //所以不用上面的用下面的
  59. Response.Write("自动登录成功,<span id='span' style=\"color:red;\">3</span> 秒后跳转。<script>var sec=2; setInterval(function (){if(sec<0){window.location='List.aspx';}else{document.getElementById(\"span\").innerHTML=sec;sec--;}},1000);</script>");
  60. //停止执行页面。
  61. Response.End();
  62. }
  63. else
  64. {
  65. Response.Write("<script>alert(\"自动登录失败,请手动登录.\");</script>");
  66. }
  67. }
  68. }
  69. }

List.aspx

  1. <style type="text/css">
  2. .head {
  3. width: 250px;
  4. margin: 30px auto;
  5. }
  6.  
  7. table {
  8. border-left: 1px solid #000;
  9. border-top: 1px solid #000;
  10. margin: 10px auto;
  11. padding: 0px;
  12. width: 500px;
  13. text-align: center;
  14. }
  15.  
  16. td {
  17. border-right: 1px solid #000;
  18. border-bottom: 1px solid #000;
  19. padding: 5px;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <form id="form1">
  25. <div class="head">姓名:<%=Web.Model.Users.USER!=null?Web.Model.Users.USER.Name:"" %> &nbsp;&nbsp;&nbsp;&nbsp;学号:<%=Web.Model.Users.USER!=null?Web.Model.Users.USER.Num:"" %></div>
  26. <div>
  27. <table cellspacing="0">
  28. <tr>
  29. <td>ID</td>
  30. <td>C#</td>
  31. <td>SQL</td>
  32. <td>ASP.NET</td>
  33. <td>Edit</td>
  34. </tr>
  35. <%Response.Write(sb.ToString()); %>
  36. </table>
  37. </div>
  38. </form>
  39. </body>

List.aspx.cs

  1. public System.Text.StringBuilder sb = new System.Text.StringBuilder();
  2.  
  3. protected void Page_Load(object sender, EventArgs e)
  4. {
  5.  
  6. //window.location=下有UrlReferrer吗? 答案:YES
  7. if (Session["name"] != null && Request.UrlReferrer.ToString().Contains("Login.aspx"))
  8. {
  9. sb.Append("<tr><td>");
  10. sb.Append(Web.Model.Users.USER.ID.ToString());
  11. sb.Append("</td><td>");
  12. if (Web.Model.Users.USER.sNUM != null)
  13. {
  14. sb.Append(Web.Model.Users.USER.sNUM.CSharp == null ? "" : Web.Model.Users.USER.sNUM.CSharp.ToString());
  15. sb.Append("</td><td>");
  16. sb.Append(Web.Model.Users.USER.sNUM.SQL == null ? "" : Web.Model.Users.USER.sNUM.SQL.ToString());
  17. sb.Append("</td><td>");
  18. sb.Append(Web.Model.Users.USER.sNUM.ASPNET == null ? "" : Web.Model.Users.USER.sNUM.ASPNET.ToString());
  19. }
  20. else
  21. {
  22. sb.Append("</td><td></td><td>");
  23. }
  24. sb.Append("</td><td>");
  25. sb.Append("<a href='Edit.aspx?access=" + Web.Model.Users.USER.Access + "'>编辑</a>");
  26. sb.Append("</td></tr>");
  27. }
  28. else
  29. {
  30. Response.Redirect("Forbidden.aspx");
  31. }
  32. }

Modify.aspx.cs

  1. private Web.BLL.TransferAction action = null;
  2. protected void Page_Load(object sender, EventArgs e)
  3. {
  4. if (Request.UrlReferrer != null && Request.UrlReferrer.ToString().Contains("Edit.aspx?access="))
  5. {
  6. int result = ;
  7. //提交表单时有空的情况?
  8. //管理员
  9. string name = Request.Form["txtMName"];
  10. string pwd = Request.Form["txtMPwd"];
  11. string num = Request.Form["txtMNum"];
  12. //用户
  13. string access = Request.Form["txtMAccess"];
  14. //Score
  15. string csharp = Request.Form["txtMCSharp"];
  16. string sql = Request.Form["txtMSQL"];
  17. string aspnet = Request.Form["txtMASPNET"];
  18. //id
  19. string id = Request.Form["id_Modify"];
  20. //
  21. if (csharp == null)
  22. {
  23. Web.Model.Users user = new Web.Model.Users();
  24. user.Name = name;
  25. user.Pwd = pwd;
  26. user.Num = num;
  27. user.Access = access == null ? null : (bool?)(bool.Parse((access == "" ? "false" : "true")));
  28. user.ID = int.Parse(id);
  29. action = new Web.BLL.TransferAction();
  30. //重点:
  31. //事实上你修改了用户密码:要重新向客户端重置Cookie
  32. result = action.Modify(user);
  33. if (result == )
  34. {
  35. HttpCookie cname = new HttpCookie("cName", num);
  36. HttpCookie cpwd = new HttpCookie("cPwd", pwd);
  37. cname.Expires = DateTime.Now.AddHours();
  38. cpwd.Expires = DateTime.Now.AddHours();
  39. Response.Cookies.Add(cname);
  40. Response.Cookies.Add(cpwd);
  41. }
  42. }
  43. else
  44. {
  45. Web.Model.Score score = new Web.Model.Score();
  46. score.CSharp = csharp == "" ? null : (int?)int.Parse(csharp);
  47. score.SQL = sql == "" ? null : (int?)int.Parse(sql);
  48. score.ASPNET = aspnet == "" ? null : (int?)int.Parse(aspnet);
  49. score.ID = int.Parse(id);
  50. action = new Web.BLL.TransferAction();
  51. result = action.Modify(score);
  52. }
  53. //action = new Web.BLL.TransferAction();
  54. if (result == )
  55. {
  56. Response.Write("数据修改成功,<span id=\"sInfo\" style=\"color:red;\">3</span>秒后,自动跳转。<script>var s=3;setInterval(function(){if(s<0){window.location='Edit.aspx?access=true';}else{document.getElementById(\"sInfo\").innerHTML=s;s--;}},1000);</script>");
  57. }
  58. else
  59. {
  60. //数据插入失败。
  61. Response.Write("数据修改失败,<span id=\"sInfo\" style=\"color:red;\">3</span>秒后,自动跳转。<script>var s=3;setInterval(function(){if(s<0){window.location='Edit.aspx?access=true';}else{document.getElementById(\"sInfo\").innerHTML=s;s--;}},1000);</script>");
  62. }
  63. }
  64. else
  65. {
  66. Response.Redirect("Forbidden.aspx");
  67. }
  68. }

Edit.aspx

  1. <style type="text/css">
  2. div p {
  3. font-size: xx-large;
  4. color: #ff006e;
  5. text-align: center;
  6. }
  7.  
  8. table {
  9. /*border-left: 1px solid #000;
  10. border-top: 0px solid #000;*/
  11. border: none;
  12. margin: 0px auto;
  13. padding: 3px;
  14. }
  15.  
  16. td {
  17. border-left: 1px solid #000;
  18. border-right: 1px solid #000;
  19. border-bottom: 1px solid #f00;
  20. padding: 5px;
  21. text-align: center;
  22. width: 100px;
  23. }
  24. </style>
  25. <script type="text/javascript">
  26. function Show() {
  27. document.getElementById(arguments[0]).style.display = "block";
  28. };
  29. function Cancel(id) {
  30. document.getElementById(id).style.display = "none";
  31. };
  32. function Del(id) {
  33. //这里没有AJAX的异步请求滴。很假很假的模拟。
  34. if (confirm("确定删除吗?")) {
  35. window.location = "Del.aspx?id=" + id;
  36. }
  37. };
  38. function tbl(innerHtml) {
  39. document.getElementById("tbl").innerHTML = innerHtml;
  40. };
  41. function GO() {
  42. //3个公共的输入框
  43. if (document.getElementById(arguments[0]).value == "") {
  44. alert("请输入名字"); return false;
  45. }
  46. if (document.getElementById(arguments[1]).value == "") {
  47. alert("请输入密码"); return false;
  48. }
  49. if (document.getElementById(arguments[2]).value == "") {
  50. alert("请输入学号"); return false;
  51. }
  52. //非管理员的修改/添加用户
  53. if (arguments.length == 4 || document.getElementById("txtMAccess")) {//
  54. var c = true;
  55. if (arguments[3] != "txtAccess") {
  56. if (document.getElementById("txtMAccess").value == "")
  57. c = false;
  58. }
  59. else {//添加用户
  60. if (document.getElementById("txtAccess").value == "")
  61. c = false;
  62. }
  63. if (!c) {
  64. alert("请输入权限"); return false;
  65. }
  66. }
  67. return true;
  68. };
  69. //可行否?:href='javascript:Show();GetTrObj();';//答案:YES。
  70. //弹出层显示
  71. function GetTrObj() {
  72. var tr, innerHtml;
  73. if (arguments[0] == "u") {//u:用户
  74. innerHtml = <%=tblU %>
  75. tr = document.getElementById("u" + arguments[1]);
  76. if (tr.childNodes[tr.childElementCount - 2].textContent == "0") {//非管理员,没有设计对管理员的权限修改
  77. innerHtml += <%=tblUAdd%>
  78. tbl(innerHtml);
  79. document.getElementById("txtMAccess").value = 0;
  80. }
  81. else
  82. tbl(innerHtml);
  83. document.getElementById('txtMName').value = tr.childNodes.item(1).textContent;
  84. document.getElementById('txtMPwd').value = tr.children.item(2).innerHTML;
  85. document.getElementById('txtMNum').value = tr.childNodes[3].innerText;
  86. //给事件动态传递参数
  87. //提取修改 管理员3个 用户4个 的公共输入框不能为空。
  88. document.getElementById("sub").onclick = function () { return GO('txtMName', 'txtMPwd', 'txtMNum'); };
  89. }
  90. else {//s:成绩
  91. innerHtml = <%=tblS%>
  92. tr = document.getElementById("s" + arguments[1]);
  93. tbl(innerHtml);
  94. document.getElementById('txtMCSharp').value = tr.childNodes.item(2).textContent;
  95. document.getElementById('txtMSQL').value = tr.children.item(3).innerHTML;
  96. document.getElementById('txtMASPNET').value = tr.childNodes[4].innerText;
  97. //Score修改
  98. //因为成绩是可为null 可以直接submit->post 不用GO验证
  99. }
  100. //表单ID
  101. document.getElementById("id_Modify").value = arguments[1];
  102. };
  103. </script>
  104. </head>
  105. <body>
  106. <!--none-->
  107. <input type="hidden" value="<%=json %>" />
  108. <div id="hidden" style="display: none;">
  109. <div>
  110. <p>管理员编辑页面</p>
  111. </div>
  112. <form id="form1">
  113. <table cellspacing="0" style="margin-top: 60px;">
  114. <tr style="border-bottom: 1px; padding: 10px;">
  115. <td colspan="5" style="text-align: left; padding-left: 60px; padding-bottom: 15px; border-right: none; border-left: none;">管理员:&nbsp;<%=(Web.Model.Users.USER!=null&&access!=null)?Web.Model.Users.USER.Name:"" %></td>
  116. <td style="text-align: center; padding-bottom: 15px; border-right: none; border-left: none;"><a href="javascript:Show('Add');">添加</a></td>
  117. </tr>
  118. <tr>
  119. <td>ID</td>
  120. <td>Name</td>
  121. <td>Pwd</td>
  122. <td>Number</td>
  123. <td>Access</td>
  124. <td>编辑</td>
  125. </tr>
  126. <%=sbUser %>
  127. </table>
  128. <table cellspacing="0" style="margin-top: 80px;">
  129. <tr>
  130. <td colspan="6" style="text-align: center; padding-bottom: 15px; border-left: none; border-right: none;">成绩列表</td>
  131. </tr>
  132. <tr>
  133. <td>ID</td>
  134. <td>Number</td>
  135. <td>C#</td>
  136. <td>SQL</td>
  137. <td>ASP.NET</td>
  138. <td>编辑</td>
  139. </tr>
  140. <%=sbScore %>
  141. </table>
  142. </form>
  143. </div>
  144. <!--Add-->
  145. <div id="Add" style="width: 500px; height: 170px; top: 50%; left: 50%; margin: -100px 0 0 -250px; position: fixed; display: none; z-index: 101; background-color: #808080; opacity: 0.9;">
  146. <br />
  147. <!--什么也没写到本页面-->
  148. <form action="Add.aspx" method="post" id="frmAdd">
  149. <div style="text-align: center; padding: 10px;">
  150. 姓名:<input type="text" name="txtName" id="txtName" />
  151. 密码:<input type="text" name="txtPwd" id="txtPwd" /><br />
  152. 学号:<input type="text" name="txtNum" id="txtNum" />
  153. 权限:<input type="text" name="txtAccess" id="txtAccess" value="0" /><br />
  154. &nbsp;&nbsp;&nbsp;C#:<input type="text" name="txtCSharp" id="txtCSharp" />
  155. &nbsp;SQL:<input type="text" name="txtSQL" id="txtSQL" /><br />
  156. ASP.Net:<input type="text" name="txtASPNET" id="txtASPNET" />
  157. </div>
  158. <div style="width: auto; float: right; margin: 10px auto; padding: 2px;">
  159. <!--添加7个输入框 参数中的4个不能为空-->
  160. <input type="submit" value="确定" id="btnOK" onclick="return GO('txtName', 'txtPwd', 'txtNum', 'txtAccess')" />&nbsp;&nbsp;<input type="button" value="取消" id="btnCancel" onclick=" javascript: Cancel('Add');" />&nbsp;&nbsp;
  161. </div>
  162. </form>
  163. </div>
  164. <!--Modify-Admin-->
  165. <div id="A_Modify" style="display: none; width: 300px; height: 180px; background-color: #0b9b05; opacity: 0.9; left: 50%; top: 50%; margin: -90px 0 0 -150px; position: fixed;">
  166. <form action="Modify.aspx" method="post">
  167. <input type="hidden" name="id_Modify" id="id_Modify" />
  168. <div id="tbl" style="width: 202px; height: auto; margin: 0 auto; padding-top: 28px;">
  169. </div>
  170. <div style="margin-top: 20px; float: right; margin-right: 40px;">
  171. <input type="submit" value="确定" id="sub" />
  172. <input type="button" value="取消" onclick="javascript: Cancel('A_Modify');" />
  173. </div>
  174. </form>
  175. </div>
  176. <div style="text-align: center; bottom: 10px; margin-top: 100px;">
  177. <span>管理员请谨慎操作</span>
  178. </div>
  179. </body>

Edit.aspx.cs

  1. protected string json;
  2. public string tblU = "'姓名:<input type=\"text\" name=\"txtMName\" id=\"txtMName\"/><br />密码:<input type=\"text\" name=\"txtMPwd\" id=\"txtMPwd\" /><br />学号:<input type=\"text\" name=\"txtMNum\" id=\"txtMNum\" /><br />';";
  3. public string tblUAdd="'权限:<input type=\"text\" name=\"txtMAccess\" id=\"txtMAccess\" /><br />';";
  4. public string tblS = "'C#:<input type=\"text\" name=\"txtMCSharp\" id=\"txtMCSharp\"/><br />SQL:<input type=\"text\" name=\"txtMSQL\" id=\"txtMSQL\"/><br />ASP.NET:<input type=\"text\" name=\"txtMASPNET\" id=\"txtMASPNET\" /><br />';";
  5. private List<Web.Model.Users> lsUsers = null;
  6. public Dictionary<int, Web.Model.Users> dUS = null;
  7. public object access = null;
  8. public System.Text.StringBuilder sbUser, sbScore;
  9. private Web.BLL.TransferAction action = null;
  10. protected void Page_Load(object sender, EventArgs e)
  11. {
  12. access = Request.QueryString["access"];
  13. //这里为什么一直请求。
  14. if (access != null && bool.Parse(access.ToString()) == true && Request.UrlReferrer != null)
  15. {
  16. //显示body
  17. Response.Write("<script>window.onload=function(){document.getElementById(\"hidden\").style.display = \"block\";};</script>");
  18. action = new Web.BLL.TransferAction();
  19. //1.得到所有的Users和Score
  20. lsUsers = action.GetUsers();
  21.  
  22. //JavaScriptSerializer js = new JavaScriptSerializer();
  23. //json = js.Serialize(lsUsers);
  24. // JavaScriptConverter
  25. if (lsUsers != null)
  26. {
  27. sbUser = new System.Text.StringBuilder();
  28. sbScore = new System.Text.StringBuilder();
  29. }
  30. foreach (Web.Model.Users item in lsUsers)
  31. {
  32. //为获取tr对象
  33. sbUser.Append("<tr id=\"u" + item.ID + "\"><td>");
  34. sbUser.Append(item.ID);
  35. sbUser.Append("</td><td>");
  36. sbUser.Append(item.Name);
  37. sbUser.Append("</td><td>");
  38. sbUser.Append(item.Pwd);
  39. sbUser.Append("</td><td>");
  40. sbUser.Append(item.Num);
  41. sbUser.Append("</td><td>");
  42. if (item.Access == true)
  43. {
  44. sbUser.Append();
  45. sbUser.Append("</td><td>");
  46. //管理员的话没有删除。假定只有一个管理员,
  47. //扩展的话可以修改Access:但是
  48. //查询出来的Access==true的count必须大于1
  49. sbUser.Append("<a href='javascript:Show(\"A_Modify\"," + item.ID + ");GetTrObj(\"u\"," + item.ID + ");'>修改</a>");
  50. }
  51. else
  52. {
  53. sbUser.Append();
  54. sbUser.Append("</td><td>");
  55. sbUser.Append("<a href='javascript:Show(\"A_Modify\"," + item.ID + ");GetTrObj(\"u\"," + item.ID + ");'>修改</a>&nbsp;&nbsp;<a href='javascript:Del(" + item.ID + ");'>删除</a>");
  56. }
  57. sbUser.Append("</td></tr>");
  58. if (item.sNUM != null)
  59. {
  60. sbScore.Append("<tr id=\"s" + item.sNUM.ID + "\"><td>");
  61. sbScore.Append(item.sNUM.ID);
  62. sbScore.Append("</td><td>");
  63. sbScore.Append(item.sNUM.Number);
  64. sbScore.Append("</td><td>");
  65. sbScore.Append(item.sNUM.CSharp);
  66. sbScore.Append("</td><td>");
  67. sbScore.Append(item.sNUM.SQL);
  68. sbScore.Append("</td><td>");
  69. sbScore.Append(item.sNUM.ASPNET);
  70. sbScore.Append("</td><td>");
  71. sbScore.Append("<a href='javascript:Show(\"A_Modify\"," + item.ID + ");GetTrObj(\"s\"," + item.sNUM.ID + ");'>修改</a>");
  72. // sbScore.Append("</td><td>");
  73. sbScore.Append("</td></tr>");
  74. }
  75. }
  76. // dUS = action.GetUsersAndScore();
  77. //2.连接成字符串显示
  78.  
  79. }
  80. else
  81. {
  82. //用一个公用方法更好。
  83. Response.Write("请用管理员身份登录,<span id='span' style=\"color:red;\">3</span> 秒后回到登录页面。<script>var sec=2; setInterval(function (){if(sec<0){window.location='Login.aspx';}else{document.getElementById(\"span\").innerHTML=sec;sec--;}},1000);</script>");
  84. Response.End();
  85. }
  86. }

Web.BAL

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace Web.BAL
  9. {
  10. public class SQLAction
  11. {
  12. private SqlHelper helper = null;
  13. public SQLAction()
  14. {
  15. helper = new SqlHelper();
  16. }
  17.  
  18. private Web.Model.Users users = null;
  19. //重点:
  20. // 关联表的对象就不能在这里置null了,
  21. //private Web.Model.Score score = null;
  22.  
  23. private Dictionary<Web.Model.Users, Web.Model.Score> dUS = null;
  24. private List<Web.Model.Users> lsUsers = null;
  25.  
  26. public bool IsExist(string number, string pwd)
  27. {
  28. return this.GetUser(number, pwd) != null;
  29. }
  30.  
  31. public Web.Model.Users GetUser(string number, string pwd)
  32. {
  33. string sql = "select * from tblUsers where u_Number=@num and u_Pwd=@pwd";
  34. SqlParameter[] param = { new SqlParameter("@num", number), new SqlParameter("@pwd", pwd) };
  35. using (SqlDataReader reader = helper.ExecuteDataReader(sql, param))
  36. {
  37. if (reader.HasRows)
  38. {
  39. while (reader.Read())
  40. {
  41. users = new Model.Users();
  42. users.ID = reader.GetInt32();
  43. users.Name = reader.GetString();
  44. users.Pwd = reader.GetString();
  45. users.Num = reader.GetString();
  46. // users.Number = this.GetScore(number);
  47. //耗能。
  48. //Web.Model.Users.Number = this.GetScore(number);
  49. users.sNUM = this.GetScore(number);
  50. users.Access = (bool?)reader.GetBoolean();
  51. Web.Model.Users.USER = users;
  52. }
  53. }
  54. }
  55. return users;
  56. }
  57. private Web.Model.Score GetScore(string number)
  58. {
  59. Web.Model.Score score = null;
  60. string sql = "select * from TblScore where s_Number=@num";
  61. //此时还能调用reader? 答案:YES
  62. using (SqlDataReader reader = helper.ExecuteDataReader(sql, new SqlParameter("@num", number)))
  63. {
  64. if (reader.HasRows)
  65. {
  66. score = new Model.Score();
  67. while (reader.Read())
  68. {
  69. score.ID = reader.GetInt32();
  70. score.Number = reader.GetString();
  71. score.CSharp = reader.IsDBNull() ? null : (int?)reader.GetInt32();
  72. score.SQL = reader.IsDBNull() ? null : (int?)reader.GetInt32();
  73. score.ASPNET = reader.IsDBNull() ? null : (int?)reader.GetInt32();
  74. }
  75. }
  76. }
  77. return score;
  78. }
  79. /// <summary>
  80. /// 这个走极端了
  81. /// </summary>
  82. /// <returns></returns>
  83. public Dictionary<Web.Model.Users, Web.Model.Score> GetUsersAndScore()
  84. {
  85. string sql = "select * from tblUsers";
  86. System.Data.DataTable dt = helper.ExecuteDataTable(sql);
  87. if (dt.Rows.Count > )
  88. {
  89. dUS = new Dictionary<Web.Model.Users, Web.Model.Score>();
  90. foreach (System.Data.DataRow item in dt.Rows)
  91. {
  92. users = new Web.Model.Users();
  93. //根据数据库设计这里不判断IsNull了。
  94. users.ID = int.Parse(item[].ToString());
  95. users.Name = item[].ToString();
  96. users.Pwd = item[].ToString();
  97. //users.Num = item[3].ToString();
  98. //看看item[4]是什么 数字--boolean
  99. users.Access = bool.Parse(item[].ToString());
  100. //添加value值为null是什么情况?
  101. //key相同不相同
  102. dUS.Add(users, this.GetScore(item[].ToString()));
  103. }
  104. }
  105. return dUS;
  106. }
  107. // 这样移植性大大降低了。
  108. // public List<Web.Model.Users> GetUsers(Dictionary<int, Web.Model.Users> dUS)
  109. public List<Web.Model.Users> GetUsers()
  110. {
  111. string sql = "select * from tblUsers";
  112. System.Data.DataTable dt = helper.ExecuteDataTable(sql);
  113. if (dt.Rows.Count > )
  114. {
  115. lsUsers = new List<Web.Model.Users>();
  116. foreach (System.Data.DataRow item in dt.Rows)
  117. {
  118. users = new Web.Model.Users();
  119. //根据数据库设计这里不判断IsNull了。
  120. users.ID = int.Parse(item[].ToString());
  121. users.Name = item[].ToString();
  122. users.Pwd = item[].ToString();
  123. users.Num = item[].ToString();
  124. users.sNUM = this.GetScore(item[].ToString());
  125. //看看item[4]是什么 数字--boolean:答案布尔
  126. users.Access = bool.Parse(item[].ToString());
  127. lsUsers.Add(users);
  128. //dUS.Add(users.ID, users);
  129. }
  130. }
  131. return lsUsers;
  132. }
  133.  
  134. public int Add(params string[] param)
  135. {
  136. //Add(name, pwd, num, access, csharp, sql, aspnet);
  137. string sqlU = "insert into tblUsers values(@name,@pwd,@num,@access)";
  138. SqlParameter[] paramU = { new SqlParameter("@name", param.GetValue()), new SqlParameter("@pwd", param[]), new SqlParameter("@num", param.ElementAt()), new SqlParameter("@access", param[]) };
  139. int tmp = helper.ExecuteNonQuery(sqlU, paramU);
  140. //
  141. if (param.Length > )
  142. {
  143. string sqlS = "insert into TblScore values(@num,@csharp,@sql,@aspnet)";
  144. SqlParameter[] paramS = { new SqlParameter("@num", param[]), new SqlParameter("@csharp", param[] == "" ? DBNull.Value : (object)param[]), new SqlParameter("@sql", param[] == "" ? DBNull.Value : (object)param[]), new SqlParameter("@aspnet", param[] == "" ? DBNull.Value : (object)param[]) };
  145. if (tmp == helper.ExecuteNonQuery(sqlS, paramS))
  146. return ;
  147. return ;
  148. }
  149. return tmp;
  150. }
  151. public int Del(string id)
  152. {
  153. string sql = "delete from tblUsers where u_ID=@id";
  154. return helper.ExecuteNonQuery(sql, new SqlParameter("@id", int.Parse(id)));
  155. }
  156.  
  157. public int Modify<T>(T obj)
  158. {
  159. string sql = string.Empty;
  160. SqlParameter[] param = null;
  161. if (obj is Web.Model.Users)
  162. {
  163. bool? acc = (obj as Web.Model.Users).Access;
  164. sql = "update tblUsers set u_Name=@name,u_Pwd=@pwd,u_Number=@num,u_Access=@access where u_ID=@id";
  165. param = new SqlParameter[] {
  166. new SqlParameter("@name",((Web.Model.Users)Convert.ChangeType(obj,typeof(Web.Model.Users))).Name),
  167. new SqlParameter("@pwd",(obj as Web.Model.Users).Pwd),
  168. new SqlParameter("@num",(obj as Web.Model.Users).Num),
  169. //null 说明:管理员的修改,
  170. new SqlParameter("@access",(acc==null?:(acc==false?:))),
  171. new SqlParameter("@id",(obj as Web.Model.Users).ID)
  172. };
  173. }
  174. else
  175. {
  176. sql = "update tblScore set s_C#=@cs,s_SQL=@sql,s_ASPNET=@aspnet where s_ID=@id";
  177. int? cs = (obj as Web.Model.Score).CSharp;
  178. int? SQL = (obj as Web.Model.Score).SQL;
  179. int? asp = (obj as Web.Model.Score).ASPNET;
  180. param = new SqlParameter[] { new SqlParameter("@cs", cs == null ? DBNull.Value : (object)cs) ,
  181. new SqlParameter("@sql",SQL==null?DBNull.Value:(object)SQL),
  182. new SqlParameter("@aspnet",asp==null?DBNull.Value:(object)asp),
  183. new SqlParameter("@id",(obj as Web.Model.Score).ID)};
  184. }
  185.  
  186. return helper.ExecuteNonQuery(sql, param);
  187. }
  188. }
  189. }

Web.Model

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Web.Model
  8. {
  9. public class Users
  10. {
  11. public Users()
  12. {
  13.  
  14. }
  15. /// <summary>
  16. /// 当前登录者
  17. /// </summary>
  18. public static Users USER { get; set; }
  19.  
  20. private int id;
  21. /// <summary>
  22. /// ID
  23. /// </summary>
  24. public int ID
  25. {
  26. get { return id; }
  27. set { id = value; }
  28. }
  29. private string name;
  30. /// <summary>
  31. /// Name
  32. /// </summary>
  33. public string Name
  34. {
  35. get { return name; }
  36. set { name = value; }
  37. }
  38. private string pwd;
  39. /// <summary>
  40. /// pwd
  41. /// </summary>
  42. public string Pwd
  43. {
  44. get { return pwd; }
  45. set { pwd = value; }
  46. }
  47. private string num;
  48. /// <summary>
  49. /// number
  50. /// </summary>
  51. public string Num
  52. {
  53. get { return num; }
  54. set { num = value; }
  55. }
  56.  
  57. //private static Score number;
  58. ///// <summary>
  59. ///// 当前登录者Score--number
  60. ///// </summary>
  61. //public static Score Number
  62. //{
  63. // get { return number; }
  64. // set { number = value; }
  65. //}
  66. private Score sNum;
  67. /// <summary>
  68. /// Score--Number
  69. /// </summary>
  70. public Score sNUM
  71. {
  72. get { return sNum; }
  73. set { sNum = value; }
  74. }
  75.  
  76. private bool? access;
  77. /// <summary>
  78. /// access
  79. /// </summary>
  80. public bool? Access
  81. {
  82. get { return access; }
  83. set { access = value; }
  84. }
  85.  
  86. }
  87. public class Score
  88. {
  89. public Score()
  90. {
  91.  
  92. }
  93. private int id;
  94. /// <summary>
  95. /// id
  96. /// </summary>
  97. public int ID
  98. {
  99. get { return id; }
  100. set { id = value; }
  101. }
  102. private string number;
  103. /// <summary>
  104. /// number
  105. /// </summary>
  106. public string Number
  107. {
  108. get { return number; }
  109. set { number = value; }
  110. }
  111. private int? csharp;
  112. /// <summary>
  113. /// C#
  114. /// </summary>
  115. public int? CSharp
  116. {
  117. get { return csharp; }
  118. set { csharp = value; }
  119. }
  120. private int? sql;
  121. /// <summary>
  122. /// sql
  123. /// </summary>
  124. public int? SQL
  125. {
  126. get { return sql; }
  127. set { sql = value; }
  128. }
  129. private int? aspnet;
  130. /// <summary>
  131. /// aspnet
  132. /// </summary>
  133. public int? ASPNET
  134. {
  135. get { return aspnet; }
  136. set { aspnet = value; }
  137. }
  138.  
  139. }
  140. }

项目文件:http://pan.baidu.com/s/1dDf5mlb

WEB简单数据操作练习的更多相关文章

  1. MySQL(二)表的操作与简单数据操作

    六大约束:主键约束.外键约束.非空约束.唯一约束.默认约束.自动增加 1.not null非空 2.defaul默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10 3.primar k ...

  2. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  3. Redis简单的数据操作(增删改查)

    #Redis简单的数据操作(增删改查): 字符串类型 string 1. 存储: set key value 127.0.0.1:6379> set username zhangsan OK 2 ...

  4. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

  5. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作

    http://www.cnblogs.com/wgp13x/p/4934521.html 内容一样,样式好的版本. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据 ...

  6. Java Web的数据库操作(一)

    一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与 ...

  7. Python股票分析系列——基础股票数据操作(一).p3

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第3部分.在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化.我们将要使用 ...

  8. Java Web----Java Web的数据库操作(三)

    Java Web的数据库操作 前面介绍了JDBC技术和JDBC API及API的使用示例,下面详细介绍JDBC在Web中的应用. Java Web----Java Web的数据库操作(一) Java ...

  9. MySQL 简洁 数据操作 增删改查 记不住的 看这里把

    1.库操作====================== 1.创建 CREATE DATABASE DB2 charset utf8; 2.删除 DROP DATABASE db2; 3.使用(进入) ...

随机推荐

  1. HTML5 测验记录

    结果:11/20 您的回答: 1.HTML5 之前的 HTML 版本是? 您的回答:HTML 4 正确答案:HTML 4.01 2.HTML5 的正确 doctype 是? 您的回答:<!DOC ...

  2. 15 款最好的 C/C++ 编译器和集成开发环境

    我们有很多编程语言来进行 web 开发,比如 Java,.Net,PHP,Ruby,Perl,Python 等等.今天我们主要讨论的是两大古老而又流行的语言: C 和 C++ ,它们有着许多卓越的特性 ...

  3. WordPress显示备案号

    备案时,需要显示备案号,而wordpress默认模板本身不带这个信息,为了更快速应付备案,解决方案如下: 根据wp-config.php的提示 .......... /** * zh_CN本地化设置: ...

  4. node.js创建服务器报错

    创建nodeTest.js如下: var http = require('http'); http.createServer(function (request, response){ respons ...

  5. 20145211 《Java程序设计》实验报告二:Java面向对象程序设计

    实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容 单元测试 面向对象三要素 设计模式初步 练习 实 ...

  6. CSS布局属性

    一.弹性盒模型介绍 1.弹性盒模型介绍 — 基础知识 弹性盒模型( Flexible Box 或 Flexbox)是一个CSS3新增布局模块,官方称为CSS Flexible Box Layout M ...

  7. Linux makefile 教程 非常详细,且易懂 (转)

    概述—— 什么是makefile?或许很多Winodws的程序员都不知道这 个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makef ...

  8. UIImage转换UIColor内存会莫名增大可以试试另一种方法

    一般我们会用此方法加载被背景图片 [self.view setBackgroundColor:[UIColor colorWithPatternImage:[[UIImage alloc]initWi ...

  9. Java对日期Date类进行加减运算,年份加减,月份加减

      import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class Da ...

  10. mysql 授权 user@'%' 为什么登陆的时候localhost 不行呢???

    公司业务服务器还没迁移到阿里云上的时候,创建的一个用户明明是所有的,但是本机登陆就是不行,一直也搞不懂原因 今天才知道 原来 %不包括 localhost mysql> grant all on ...