工具:VS2012
數據庫:SQL server
簡單說明:根據老師上課給的代碼,進行了簡單的改正適用於VS2012環境,包括注冊、登錄、查詢、修改、刪除功能,多數參考了網上的代碼
百度雲源代碼連接testDAO:http://pan.baidu.com/s/1c0CTRgs
遇見的問題:
1、字符文本中字符太多: 在html中用的<a href=" ">,在.NET中需要把雙引號變成單引號,javascript中的部分雙引號也需變成單引號,此處代碼詳見register.aspx
2、如何javascript獲取表格中的行數:通過varx=document.getElementById("表格id");找到table,x.rows[].cells[]即可找到第幾行第幾列 此處代碼詳見register.aspx的javascript代碼
3、如何通過asp獲取url中參數的值:http://localhost:30965/testDAO/list.aspx?username=16&psaaword=21
String x= Request.QueryString["username"];即可獲得username的值16
文件結構如右圖所示
數據庫名字:easylife 表的名字:table_user 表內容如圖:
界面如下圖所示:
DBHelper.cs代碼:在每一個對象的數據庫訪問類中:1、數據庫連接反復出現 2、數據庫連接打開和關閉反復出現 3、執行Sql語句的方法相似
因此,定義DBHelper類,封裝常用的方法
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Data.SqlClient; 6 7 /// <summary> 8 /// DBHelper 的摘要說明 9 /// </summary> 10 namespace testDAO.Library 11 { 12 public class DBHelper 13 {//server=.;Trusted_Connection=SSPI;database=easylife 14 private String connectionString = "server=.;database=easylife;uid=sa;pwd=root"; 15 16 public SqlDataReader ExecuteReader(String sql) 17 { 18 SqlConnection connection = new SqlConnection(connectionString); 19 connection.Open(); 20 21 SqlCommand command = new SqlCommand(sql,connection); 22 23 SqlDataReader result = command.ExecuteReader(); 24 25 return result; 26 } 27 28 public bool ExecuteCommand(String sql) 29 { 30 bool result = false; 31 32 try 33 { 34 SqlConnection connection = new SqlConnection(connectionString); 35 connection.Open(); 36 37 SqlCommand command = new SqlCommand(sql,connection); 38 //command.Connection = connection; 39 //command.CommandText = sql; 40 command.ExecuteNonQuery(); 41 42 43 connection.Close(); 44 45 result = true; 46 } 47 catch (Exception e) 48 { 49 throw e; 50 } 51 52 return result; 53 } 54 55 } 56 }
定義User類封裝用戶信息 User.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// User 的摘要說明 /// </summary> namespace testDAO.Library { public class User { private String userName = ""; private String userLogin = ""; private String userPwd = ""; public String UserName { get { return userName; } set { userName = value; } } public String UserLogin { get { return userLogin; } set { userLogin = value; } } public String UserPwd { get { return userPwd; } set { userPwd = value; } } } }
采用UserService實現將用戶信息的數據庫操作 UserService.cs
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 using System.Data.SqlClient; 7 /// <summary> 8 /// UserService 的摘要說明 9 /// </summary> 10 namespace testDAO.Library 11 { 12 public class UserService 13 { 14 public bool AddUser(User user) 15 { 16 bool result = false; 17 String sql = ""; 18 19 sql = "insert into table_user (userName,userLogin,userPwd)values("; 20 sql += "'" + user.UserName + "',"; 21 sql += "'" + user.UserLogin + "',"; 22 sql += "'" + user.UserPwd + "'"; 23 sql += ")"; 24 25 DBHelper helper = new DBHelper(); 26 result = helper.ExecuteCommand(sql); 27 return result; 28 29 } 30 31 public User GetUserByLogin(User user) 32 { 33 String sql = ""; 34 35 sql = "select * from table_user where userLogin='" + user.UserLogin + "'"; 36 37 DBHelper helper = new DBHelper(); 38 SqlDataReader reader = helper.ExecuteReader(sql); 39 User result = new User(); 40 if (reader.Read()) 41 { 42 43 result.UserName = reader.GetString(0); 44 result.UserLogin = reader.GetString(1); 45 result.UserPwd = reader.GetString(2); 46 47 } 48 else 49 { 50 return null; 51 } 52 53 return result; 54 } 55 56 public List<User> GetAllUsers() 57 { 58 String sql = ""; 59 60 sql = "select * from table_user"; 61 62 DBHelper helper = new DBHelper(); 63 SqlDataReader reader = helper.ExecuteReader(sql); 64 65 if (!reader.HasRows) 66 { 67 return null; 68 } 69 70 List<User> list = new List<User>(); 71 while (reader.Read()) 72 { 73 User item = new User(); 74 75 item.UserName = reader.GetString(0); 76 item.UserLogin = reader.GetString(1); 77 item.UserPwd = reader.GetString(2); 78 79 list.Add(item); 80 } 81 82 return list; 83 } 84 85 public bool DeleteUsers(String i) 86 { 87 bool result = false; 88 String sql = ""; 89 sql = "delete from table_user where userLogin ='"+ i+" '" ; 90 DBHelper helper = new DBHelper(); 91 result = helper.ExecuteCommand(sql); 92 return result; 93 } 94 95 public bool UpdateUsers(User user) 96 { 97 bool result = false; 98 String sql = ""; 99 sql = "update table_user set userName= '" + user.UserName + "',userPwd='" + user.UserPwd + " ' where userlogin='" + user.UserLogin + " '"; 100 // update table_user set userName='1',userPwd='1' where userLogin='5' 101 DBHelper helper = new DBHelper(); 102 result = helper.ExecuteCommand(sql); 103 return result; 104 } 105 106 } 107 }
業務邏輯層UserManager.cs,是表示層與數據訪問層的橋梁 ,用於完成邏輯判斷、業務處理、數據傳遞等操作。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 /// <summary> 7 /// UserManager 的摘要說明 8 /// </summary> 9 namespace testDAO.Library 10 { 11 public class UserManager 12 { 13 public bool AddUser(User user) 14 { 15 UserService service = new UserService(); 16 User temp = service.GetUserByLogin(user); 17 18 if (temp != null) 19 { 20 return false; 21 } 22 23 bool result = service.AddUser(user); 24 return result; 25 } 26 27 public bool Login(User user) 28 { 29 bool result = false; 30 31 UserService service = new UserService(); 32 33 User temp = service.GetUserByLogin(user); 34 if (temp == null) 35 { 36 result = false; 37 } 38 else if (user.UserPwd.Equals(temp.UserPwd)) 39 { 40 result = true; 41 } 42 43 return result; 44 } 45 46 public List<User> GetAllUsers() 47 { 48 UserService service = new UserService(); 49 return service.GetAllUsers(); 50 } 51 public bool DeleteUser(User user) 52 { 53 UserService service = new UserService(); 54 55 bool result = service.DeleteUsers(user.UserLogin); 56 return result; 57 58 } 59 60 public bool UpdateUser(User user) 61 { 62 UserService service = new UserService(); 63 bool result = service.UpdateUsers(user); 64 return result; 65 } 66 } 67 }
注冊界面代碼regeister.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="register.aspx.cs" Inherits="register" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <br /> <asp:Label ID="Label1" runat="server" Text="姓名:"></asp:Label> <asp:TextBox ID="nameText" runat="server"></asp:TextBox> <br /> <br /> <asp:Label ID="Label2" runat="server" Text="帳號:"></asp:Label> <asp:TextBox ID="loginText" runat="server"></asp:TextBox> <br /> <br /> <asp:Label ID="Label3" runat="server" Text="密碼:"></asp:Label> <asp:TextBox ID="pwdText" runat="server"></asp:TextBox> <br /> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="注冊" /> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="轉向登錄" /> </div> </form> </body> </html>
注冊界面邏輯代碼 regeister.aspx.cs

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Data.SqlClient; 8 using testDAO.Library; 9 10 public partial class register : System.Web.UI.Page 11 { 12 protected void Page_Load(object sender, EventArgs e) 13 { 14 15 } 16 17 public void CreateTable() 18 { 19 String connectionString = "server=.;Trusted_Connection=SSPI;database=easylife"; 20 SqlConnection connection = new SqlConnection(connectionString); 21 connection.Open(); 22 SqlCommand command = new SqlCommand(); 23 command.Connection = connection; 24 command.ExecuteNonQuery(); 25 connection.Close(); 26 } 27 protected void Button1_Click(object sender, EventArgs e) 28 { 29 String userName = nameText.Text; 30 String userLogin = loginText.Text; 31 String userPwd = pwdText.Text; 32 33 User user = new User(); 34 user.UserName = userName; 35 user.UserLogin = userLogin; 36 user.UserPwd = userPwd; 37 38 bool result = false; 39 UserManager manager = new UserManager(); 40 result = manager.AddUser(user); 41 Response.Write(result); 42 if (result) 43 { 44 Response.Write("注冊成功"); 45 } 46 else 47 { 48 Response.Write("注冊失敗"); 49 } 50 } 51 protected void Button2_Click(object sender, EventArgs e) 52 { 53 Response.Redirect("login.aspx"); 54 } 55 }
登錄界面代碼 login.aspx

1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="login" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 8 <title></title> 9 </head> 10 <body> 11 <form id="form1" runat="server"> 12 <div> 13 <br /> 14 <asp:Label ID="Label1" runat="server" Text="帳號:"></asp:Label> 15 <asp:TextBox ID="loginText" runat="server"></asp:TextBox> 16 <br /> 17 <br /> 18 <asp:Label ID="Label2" runat="server" Text="密碼:"></asp:Label> 19 <asp:TextBox ID="pwdText" runat="server"></asp:TextBox> 20 <br /> 21 <br /> 22 <asp:Button ID="loginButton" runat="server" onclick="loginButton_Click" 23 Text="登錄" /> 24 <asp:Button ID="Button1" runat="server" Text="轉向注冊" OnClick="Button1_Click" /> 25 </div> 26 </form> 27 </body> 28 </html>
登錄界面邏輯代碼 login.aspx.cs

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using testDAO.Library; 8 9 public partial class login : System.Web.UI.Page 10 { 11 protected void Page_Load(object sender, EventArgs e) 12 { 13 14 } 15 protected void Button1_Click(object sender, EventArgs e) 16 { 17 Response.Redirect("register.aspx"); 18 } 19 20 protected void loginButton_Click(object sender, EventArgs e) 21 { 22 User user = new User(); 23 24 user.UserLogin = loginText.Text; 25 user.UserPwd = pwdText.Text; 26 27 UserManager manager = new UserManager(); 28 bool result = manager.Login(user); 29 if (result) 30 { 31 Response.Redirect("list.aspx"); 32 } 33 else 34 { 35 Response.Write("登錄失敗,請輸入正確的用戶名和密碼"); 36 } 37 38 39 } 40 }
顯示界面代碼:
顯示界面相關說明:
顯示界面圖片是這樣:
當點擊修改時圖片如下:
點擊修改時通過table獲得table中的行數,從而改變行數中相應的內容,相關代碼在javascript中
參數傳值通過URL獲取

1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="list.aspx.cs" Inherits="list" %> 2 3 <%@ Import Namespace="testDAO.Library" %> 4 <!DOCTYPE html> 5 6 <html xmlns="http://www.w3.org/1999/xhtml"> 7 <head runat="server"> 8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 9 <title></title> 10 </head> 11 <body> 12 <form id="form1" runat="server"> 13 <div> 14 <table id="test" width="1000" align="center" border = "1" cellpadding="1" cellspacing="1" bordercolordark="#808080" bordercolorlight="#ffffff" > 15 <tr> 16 <td align="center">序號</td> 17 <td align="center">姓名</td> 18 <td align="center">帳號</td> 19 <td align="center">密碼</td> 20 <td align="center">修改</td> 21 <td align="center">刪除</td> 22 </tr> 23 <% 24 UserManager manager = new UserManager(); 25 List<User> list = manager.GetAllUsers(); 26 27 for (int i = 0; i < list.Count; i++) 28 { 29 Response.Write("<tr >"); 30 Response.Write("<td align='center'>" + i + "</td>"); 31 Response.Write("<td align='center'>" + list[i].UserName + "</td>"); 32 Response.Write("<td align='center' id='loginText'>" + list[i].UserLogin + "</td>"); 33 Response.Write("<td align='center'>" + list[i].UserPwd + "</td>"); 34 35 Response.Write("<td align='center'><input type='Button' value='修改' onclick='test1("+i+")' >修改</td>"); 36 Response.Write("<td align='center'><a href='userDelete.aspx?userLogin=" + list[i].UserLogin + "'>刪除</a></td>"); 37 38 Response.Write("</tr>"); 39 } 40 %> 41 </table> 42 <asp:Button ID="button" runat="server" Text="轉向注冊" OnClick="Button1_Click" /> 43 44 </div> 45 </form> 46 <script type="text/javascript"> 47 48 function test1(j) 49 { 50 var table = document.getElementById("test"); 51 table.rows[j + 1].cells[1].innerHTML = "<input type='text' id='nameText' >"; 52 table.rows[j + 1].cells[3].innerHTML = "<input type='text' id='pwdText' >"; 53 table.rows[j + 1].cells[4].innerHTML="<input type='button' value='確定' onclick='tiaozhuan("+j+")' >" 54 55 } 56 function tiaozhuan(i) { 57 var table = document.getElementById("test"); 58 var userName=document.getElementById("nameText").value; 59 var userPwd = document.getElementById("pwdText").value; 60 var userLogin=table.rows[i + 1].cells[2].innerHTML; 61 62 location.href="userUpdate.aspx?userName="+ userName+"&userPwd="+userPwd+"&userLogin="+userLogin+" "; 63 } 64 </script> 65 </body> 66 </html>
list.aspx.cs代碼只有通過點擊button按鈕轉向到注冊頁面,對其它功能並無影響
通過點擊修改進行更新邏輯代碼 UserUpdate.aspx.cs代碼
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using testDAO.Library; 8 9 public partial class userUpdate : System.Web.UI.Page 10 { 11 protected void Page_Load(object sender, EventArgs e) 12 { 13 14 User user = new User(); 15 16 user.UserName= Request.QueryString["userName"]; 17 user.UserLogin = Request.QueryString["userLogin"]; 18 user.UserPwd = Request.QueryString["userPwd"]; 19 UserManager manager = new UserManager(); 20 bool result = manager.UpdateUser(user); 21 if (result) 22 { 23 Response.Redirect("list.aspx"); 24 } 25 else 26 { 27 Response.Write("修改失敗"); 28 } 29 30 31 } 32 }
通過點擊刪除進行刪除邏輯代碼 userDelete.aspx.cs代碼
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using testDAO.Library; 8 public partial class userDelete : System.Web.UI.Page 9 { 10 protected void Page_Load(object sender, EventArgs e) 11 { 12 User user = new User(); 13 14 user.UserLogin = Request.QueryString["userLogin"]; 15 16 17 UserManager manager = new UserManager(); 18 bool result = manager.DeleteUser(user); 19 if (result) 20 { 21 Response.Redirect("list.aspx"); 22 } 23 else 24 { 25 Response.Write("刪除失敗"); 26 } 27 28 } 29 }