一、常用技术概括及介绍

1. SQL server:处理数据库的设计
2. asp.net 
3. html            :前端网页
4. css     :网页的布局设计
5. JavaScript  :能够更好的操作页面
6. jQuery        :
7. ajax    :处理局部刷新请求

二、分层介绍 (类库)
1.bll:业务层、
2.dal:数据层、
3.model:对应数据库的表、
4.common:公共方法
5.webapp:新建的app

6.webapp自带的配置文件

 

创建好之后如下:

ASP.NET为开发者带来的便利 asp.net web开发技术_Email

三、实现步骤
1. 数据层中两个类,对应封装增删改查语句

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
namespace CZBK.ItcastProject.DAL
{
   public class SqlHelper
    {
        //getdatetable方法获取整个表     //参数1.sql语句  2. 判断是sql语句还是存储过程 3. 传递的参数
       private static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;  //读取配置文件中的字符串
       public static DataTable GetDataTable(string sql,CommandType type,params SqlParameter[]pars)
       {    
           using (SqlConnection conn = new SqlConnection(connStr))
           {   
               using (SqlDataAdapter apter = new SqlDataAdapter(sql, conn))
               {
                   if (pars != null)
                   {
                       apter.SelectCommand.Parameters.AddRange(pars);
                   }
                   apter.SelectCommand.CommandType = type;
                   DataTable da = new DataTable();
                   apter.Fill(da);
                   return da;
               }
           }
       }
       //获取受影响行数,ExecuteNonQuery 主要用在插入,更新,删除 一般情况用在查询的时候返回的是-1 
       public static int ExecuteNonquery(string sql, CommandType type, params SqlParameter[] pars)
       {
      
           using (SqlConnection conn = new SqlConnection(connStr))
           {
               using (SqlCommand cmd = new SqlCommand(sql, conn))
               {
                   if (pars != null)
                   {
                       cmd.Parameters.AddRange(pars);
                   }
                   cmd.CommandType = type;
                   conn.Open();
                   return cmd.ExecuteNonQuery();
               }
           }
       }
    }
}

 

ASP.NET为开发者带来的便利 asp.net web开发技术_System_02

ASP.NET为开发者带来的便利 asp.net web开发技术_ASP.NET为开发者带来的便利_03

1 using CZBK.ItcastProject.Model;
  2 using System;
  3 using System.Collections.Generic;
  4 using System.Linq;
  5 using System.Text;
  6 using System.Threading.Tasks;
  7 using System.Data;
  8 using System.Data.SqlClient;
  9 namespace CZBK.ItcastProject.DAL
 10 {
 11     public class UserInfoDal
 12     {
 13         /// <summary>
 14         /// 获取用户列表
 15         /// </summary>
 16         /// <returns></returns>
 17         public List<UserInfo> GetList()
 18         {
 19             string sql = "select * from UserInfo";
 20             DataTable da = SqlHelper.GetDataTable(sql, CommandType.Text);
 21             List<UserInfo> list = null;
 22             if (da.Rows.Count > 0)
 23             {
 24                 list = new List<UserInfo>();
 25                 UserInfo userInfo = null;
 26                 foreach (DataRow row in da.Rows)
 27                 {
 28                     userInfo = new UserInfo();
 29                     LoadEntity(userInfo, row);
 30                     list.Add(userInfo);
 31                 }
 32             }
 33             return list;
 34         }
 35         /// <summary>
 36         /// 添加用户信息
 37         /// </summary>
 38         /// <param name="userInfo"></param>
 39         /// <returns></returns>
 40         public int AddUserInfo(UserInfo userInfo)
 41         {
 42             string sql = "insert into UserInfo(UserName,UserPass,RegTime,Email) values(@UserName,@UserPass,@RegTime,@Email)";
 43             SqlParameter[] pars = { 
 44                                 new SqlParameter("@UserName",SqlDbType.NVarChar,32),
 45                                   new SqlParameter("@UserPass",SqlDbType.NVarChar,32),
 46                                          new SqlParameter("@RegTime",SqlDbType.DateTime),
 47                                     new SqlParameter("@Email",SqlDbType.NVarChar,32)
 48                                 };
 49             pars[0].Value = userInfo.UserName;
 50             pars[1].Value = userInfo.UserPass;
 51             pars[2].Value = userInfo.RegTime;
 52             pars[3].Value = userInfo.Email;
 53             return SqlHelper.ExecuteNonquery(sql, CommandType.Text, pars);
 54         }
 55 
 56         /// <summary>
 57         /// 根据ID删除用户的信息
 58         /// </summary>
 59         /// <param name="id"></param>
 60         /// <returns></returns>
 61         public int DeleteUserInfo(int id)
 62         {
 63             string sql = "delete  from UserInfo where ID=@ID";
 64             SqlParameter[] pars = { 
 65                                   new SqlParameter("@ID",SqlDbType.Int)
 66                                   };
 67             pars[0].Value = id;
 68             return SqlHelper.ExecuteNonquery(sql,CommandType.Text,pars);
 69         }
 70 
 71         /// <summary>
 72         /// 修改用户信息
 73         /// </summary>
 74         /// <param name="userInfo"></param>
 75         /// <returns></returns>
 76         public int EditUserInfo(UserInfo userInfo)
 77         {
 78             string sql = "update UserInfo set UserName=@UserName,UserPass=@UserPass,RegTime=@RegTime,Email=@Email where ID=@ID";
 79             SqlParameter[] pars = { 
 80                                 new SqlParameter("@UserName",SqlDbType.NVarChar,32),
 81                                   new SqlParameter("@UserPass",SqlDbType.NVarChar,32),
 82                                          new SqlParameter("@RegTime",SqlDbType.DateTime),
 83                                     new SqlParameter("@Email",SqlDbType.NVarChar,32),
 84                                     new SqlParameter("@ID",SqlDbType.Int)
 85                                 };
 86             pars[0].Value = userInfo.UserName;
 87             pars[1].Value = userInfo.UserPass;
 88             pars[2].Value = userInfo.RegTime;
 89             pars[3].Value = userInfo.Email;
 90             pars[4].Value = userInfo.Id;
 91             return SqlHelper.ExecuteNonquery(sql, CommandType.Text, pars);
 92         }
 93 
 94         /// <summary>
 95         /// 根据用户的编号,获取用户的信息
 96         /// </summary>
 97         /// <param name="id"></param>
 98         /// <returns></returns>
 99         public UserInfo GetUserInfo(int id)
100         {
101             string sql = "select * from UserInfo where ID=@ID";
102             SqlParameter[] pars = { 
103                                   new SqlParameter("@ID",SqlDbType.Int)
104                                   };
105             pars[0].Value = id;
106             DataTable da=SqlHelper.GetDataTable(sql, CommandType.Text, pars);
107             UserInfo userInfo = null;
108             if (da.Rows.Count > 0)
109             {
110                 userInfo = new UserInfo();
111                 LoadEntity(userInfo, da.Rows[0]);
112             }
113             return userInfo;
114         }
115  
116 
117         private void LoadEntity(UserInfo userInfo, DataRow row)
118         {
119             userInfo.UserName = row["UserName"] != DBNull.Value ? row["UserName"].ToString() : string.Empty;
120             userInfo.UserPass = row["UserPass"] != DBNull.Value ? row["UserPass"].ToString() : string.Empty;
121             userInfo.Email = row["Email"] != DBNull.Value ? row["Email"].ToString() : string.Empty;
122             userInfo.Id = Convert.ToInt32(row["ID"]);
123             userInfo.RegTime = Convert.ToDateTime(row["RegTime"]);
124         }
125     }
126 }

具体增删改查部分

 model层中添加与列相同的表字段。示例代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CZBK.ItcastProject.Model
{
   public class UserInfo
    {
       public int Id { get; set; }
       public string UserName { get; set; }
       public string UserPass { get; set; }
       public DateTime RegTime { get; set; }
       public string Email { get; set; }
    }
}

 

2. 业务层中写一个调用对象方法的方法

ASP.NET为开发者带来的便利 asp.net web开发技术_System_02

ASP.NET为开发者带来的便利 asp.net web开发技术_ASP.NET为开发者带来的便利_03

1 using CZBK.ItcastProject.Model;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 using CZBK.ItcastProject.DAL;
 8 namespace CZBK.ItcastProject.BLL
 9 {
10    public class UserInfoService
11     {
12       UserInfoDal UserInfoDal = new UserInfoDal();
13        /// <summary>
14        /// 返回数据列表
15        /// </summary>
16        /// <returns></returns>
17        public List<UserInfo> GetList()
18        {
19            return UserInfoDal.GetList();
20        }
21        /// <summary>
22        /// 添加数据
23        /// </summary>
24        /// <param name="userInfo"></param>
25        /// <returns></returns>
26        public bool AddUserInfo(UserInfo userInfo)
27        {
28            return UserInfoDal.AddUserInfo(userInfo)>0;
29        }
30         /// <summary>
31         /// 根据ID删除用户的信息
32         /// </summary>
33         /// <param name="id"></param>
34         /// <returns></returns>
35        public bool DeleteUserInfo(int id)
36        {
37            return UserInfoDal.DeleteUserInfo(id) > 0;
38        }
39        /// <summary>
40        /// 修改用户信息
41        /// </summary>
42        /// <param name="userInfo"></param>
43        /// <returns></returns>
44        public bool EditUserInfo(UserInfo userInfo)
45        {
46            return UserInfoDal.EditUserInfo(userInfo) > 0;
47        }
48        /// <summary>
49         /// 根据用户的编号,获取用户的信息
50         /// </summary>
51         /// <param name="id"></param>
52         /// <returns></returns>
53        public UserInfo GetUserInfo(int id)
54        {
55            return UserInfoDal.GetUserInfo(id);
56        }
57         
58     }
59 }

UserInfoService

 

3. 新建一个html页面,

ASP.NET为开发者带来的便利 asp.net web开发技术_System_02

ASP.NET为开发者带来的便利 asp.net web开发技术_ASP.NET为开发者带来的便利_03

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <link href="Css/tableStyle.css" rel="stylesheet" />
    <script src="Js/jquery-1.7.1.js"></script>
    <script type="text/javascript">
        $(function () {
            $(".deletes").click(function () {
                if (!confirm("确定要删除吗?")) {
                    return false;
                }
            });
        });
    </script>
</head>
    
<body>
    <a href="AddUserInfo.html">添加</a>
    <table>
        <tr><th>编号</th><th>用户名</th><th>密码</th><th>邮箱</th><th>时间</th><th>删除</th><th>详细</th><th>编辑</th></tr>
       @tbody

    </table>
</body>
</html>

UserInfoList.html

 

4. 新建一个一般处理程序

ASP.NET为开发者带来的便利 asp.net web开发技术_System_02

ASP.NET为开发者带来的便利 asp.net web开发技术_ASP.NET为开发者带来的便利_03

using CZBK.ItcastProject.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;

namespace CZBK.ItcastProject.WebApp
{
    /// <summary>
    /// UserInfoList 的摘要说明
    /// </summary>
    public class UserInfoList : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            //new一个业务层的类库对象
            BLL.UserInfoService UserInfoService = new BLL.UserInfoService();
            //调用获取全部列表的方法
           List<UserInfo> list= UserInfoService.GetList();
            //快捷操作字符串的方法
           StringBuilder sb = new StringBuilder();
            //将遍历到的数据拼接成一个新的字符串
           foreach (UserInfo userInfo in list)
           {
               sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td><a href='DeleteUser.ashx?id={0}' class='deletes'>删除</a></td><td><a href='ShowDetail.ashx?uid={0}'>详细</a></td><td><a href='ShowEdit.ashx?id={0}'>编辑</a></td></tr>",userInfo.Id,userInfo.UserName,userInfo.UserPass,userInfo.Email,userInfo.RegTime);
           }
            //读取模板文件的路径
           string filePath = context.Request.MapPath("UserInfoList.html");
            //读取其中全部的字节
           string fileCotent = File.ReadAllText(filePath);
            //替换字符串
           fileCotent = fileCotent.Replace("@tbody",sb.ToString());
           context.Response.Write(fileCotent);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

UserInfoList.ashx