先看下全家福吧

切入正题

首先要有一个model,没有对象操作怎么行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ClassModel
{public class ClassModels{private int cId;public int CId{get { return cId; }set { cId = value; }}private string cName;public string CName{get { return cName; }set { cName = value; }}private int cCount;public int CCount{get { return cCount; }set { cCount = value; }}}
}

  

然后要有一个SqlHelper(不然操作数据库要累死了)

View Code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Configuration;
 6 using System.Data.SqlClient;
 7 using System.Data;
 8
 9 namespace ClassDal
10 {
11     class SqlHelper
12     {
13         public static string connstr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
14         public static SqlDataReader ExcuteReader(string sql, params SqlParameter[] pams)
15         {
16             SqlConnection conn = new SqlConnection(connstr);
17             using (SqlCommand cmd=new SqlCommand(sql,conn))
18             {
19                 if (pams!=null)
20                 {
21                     cmd.Parameters.AddRange(pams);
22                 }
23                 if (conn.State==System.Data.ConnectionState.Closed)
24                 {
25                     conn.Open();
26                 }
27                 return cmd.ExecuteReader();
28             }
29
30         }
31
32         public static DataTable ExcuteDataTable(string sql,params SqlParameter[] pams)
33         {
34             using (SqlDataAdapter adapter=new SqlDataAdapter(sql,connstr))
35             {
36                 if (pams!=null)
37                 {
38                     adapter.SelectCommand.Parameters.AddRange(pams);
39                 }
40                 DataTable dt = new DataTable();
41                 adapter.Fill(dt);
42                 return dt;
43             }
44         }
45         //增删改
46         public static int ExcuteNonQuery(string sql, params SqlParameter[] pams)
47         {
48             using (SqlConnection conn=new SqlConnection(connstr))
49             {
50                 using (SqlCommand cmd=new SqlCommand(sql,conn))
51                 {
52                     if (pams!=null)
53                     {
54                         cmd.Parameters.AddRange(pams);
55                     }
56                     if (conn.State==ConnectionState.Closed)
57                     {
58                         conn.Open();
59                     }
60                     return cmd.ExecuteNonQuery();
61                 }
62             }
63         }
64
65         public static object ExcuteScalar(string sql, params SqlParameter[] pams)
66         {
67             using (SqlConnection conn=new SqlConnection(connstr))
68             {
69                 using (SqlCommand cmd=new SqlCommand(sql,conn))
70                 {
71                     if (pams!=null)
72                     {
73                         cmd.Parameters.AddRange(pams);
74                     }
75                     if (conn.State==ConnectionState.Closed)
76                     {
77                         conn.Open();
78                     }
79                     return cmd.ExecuteScalar();
80                 }
81             }
82         }
83     }
84
85
86 }

然后写 数据访问层(DAL):

View Code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Data;
 6 using System.Data.SqlClient;
 7 namespace ClassDal
 8 {
 9     public class ClassDals
10     {
11         //datetable 获取信息
12         public DataTable GetAll()
13         {
14             string sql = "select *from Classes";
15             return SqlHelper.ExcuteDataTable(sql);
16         }
17         // datereader 获取信息
18         public SqlDataReader GetAllInfo()
19         {
20             string sql = "select *from Classes";
21             return SqlHelper.ExcuteReader(sql);
22         }
23         public SqlDataReader GetInfoFromId(ClassModel.ClassModels model)
24         {
25             string sql = "select *from Classes where CID=@id";
26             return SqlHelper.ExcuteReader(sql, new SqlParameter("@id",model.CId));
27         }
28         public int DeleteInfo(int id)
29         {
30             string sql = "delete from Classes where CID=@cid";
31             SqlParameter pam = new SqlParameter("@cid",id);
32             return SqlHelper.ExcuteNonQuery(sql,pam);
33         }
34         //CID, CName, CCount, CImage, CIsDel, CAddTime
35         public int AddInfo(ClassModel.ClassModels model)
36         {
37
38             string sql = "insert into Classes(CName,CCount)values(@CName,@CCount)";
39             SqlParameter[] pam = new SqlParameter[] {
40             new SqlParameter("@CName",model.CName),
41             new SqlParameter("@CCount",model.CCount)
42             };
43             return SqlHelper.ExcuteNonQuery(sql,pam);
44         }
45         public int UpdateInfo(ClassModel.ClassModels model)
46         {
47             //update Classes set CName='123',CCount='123' where CID='43'
48             string sql = "update Classes set CName=@name,CCount=@count where CID=@id";
49             SqlParameter[] pams = new SqlParameter[] {
50             new SqlParameter("@id",model.CId),
51             new SqlParameter("@name",model.CName),
52             new SqlParameter("@count",model.CCount)
53             };
54             return SqlHelper.ExcuteNonQuery(sql,pams);
55         }
56
57     }
58 }

在写 业务逻辑层(BLL):

View Code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Data;
 6 using ClassDal;
 7 using System.Data.SqlClient;
 8
 9 namespace ClassBll
10 {
11     public class ClassBll
12     {
13         ClassDals dal = new ClassDals();
14         public List<ClassModel.ClassModels> GetAll()
15         {
16             DataTable da = dal.GetAll();
17             List<ClassModel.ClassModels> list = new List<ClassModel.ClassModels>();
18             if (da.Rows.Count > 0)
19             {
20                 ClassModel.ClassModels mode = null;
21                 foreach (DataRow row in da.Rows)
22                 {
23                     mode = new ClassModel.ClassModels();
24                     mode.CId = Convert.ToInt32(row["CID"].ToString());
25                     mode.CCount = Convert.ToInt32(row["CCount"].ToString());
26                     mode.CName = row["CName"].ToString();
27                     list.Add(mode);
28                 }
29                 return list;
30             }
31             else
32             {
33                 return null;
34             }
35         }
36
37         public List<ClassModel.ClassModels> GetAllInfo()
38         {
39             List<ClassModel.ClassModels> list = new List<ClassModel.ClassModels>();
40             SqlDataReader reader = dal.GetAllInfo();
41             while (reader.Read())
42             {
43                 if (reader.HasRows)
44                 {
45                     ClassModel.ClassModels model = new ClassModel.ClassModels();
46                     model.CId = reader.GetInt32(0);
47                     model.CName = reader.GetString(1);
48                     model.CCount = reader.GetInt32(2);
49                     list.Add(model);
50
51                 }
52             }
53             return list;
54         }
55         public ClassModel.ClassModels GetInfoFromId(ClassModel.ClassModels model)
56         {
57
58             SqlDataReader reader = dal.GetInfoFromId(model);
59             if (reader.Read())
60             {
61                 if (reader.HasRows)
62                 {
63                     //ClassModel.ClassModels model = new ClassModel.ClassModels();
64                     model.CId = reader.GetInt32(0);
65                     model.CName = reader.GetString(1);
66                     model.CCount = reader.GetInt32(2);
67
68
69                 }
70             }
71
72             return model;
73         }
74         public int DeleteInfo(int id)
75         {
76           return  dal.DeleteInfo(id);
77         }
78         public int AddInfo(ClassModel.ClassModels model)
79         {
80             return dal.AddInfo(model);
81         }
82         public int UpdateInfo(ClassModel.ClassModels model)
83         {
84             return dal.UpdateInfo(model);
85         }
86
87     }
88 }

然后要写一个list页面显示数据,不然怎么增删改呢?(好像是废话!)

前台:

View Code

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="List.aspx.cs" Inherits="List" %>
 2
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <title>学生成绩管理系统</title>
 8     <style type="text/css">
 9         #tbList
10         {
11             border: 1px solid blue;
12
13         }
14         #tbList th, td
15         {
16             border-bottom: 1px solid blue;
17             border-right: 1px solid blue;
18
19         }
20     </style>
21 </head>
22 <body>
23     <form id="form1" method="post" action="AddInfo.aspx">
24     <div>
25         <table border="1" cellpadding="1" cellspacing="0">
26             <tr>
27                 <th>编号</th><th>班级名称</th><th>人数</th><th colspan="2">操作</th>
28             </tr>
29             <%=GetAllInfo()%>
30         </table>
31         <input type="submit" name="btnAdd" value="添加" />
32     </div>
33     </form>
34 </body>
35 </html>

后台:

View Code

 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.Text;
 8
 9 public partial class List : System.Web.UI.Page
10 {
11     protected void Page_Load(object sender, EventArgs e)
12     {
13
14     }
15     public string GetAllInfo()
16     {
17         StringBuilder sb = new StringBuilder();
18         ClassBll.ClassBll bll = new ClassBll.ClassBll();
19         List<ClassModel.ClassModels> list = bll.GetAllInfo();
20         foreach (ClassModel.ClassModels model in list)
21         {
22             sb.Append("<tr>");
23             sb.Append("<td>" + model.CId + "</td>");
24             sb.Append("<td>" + model.CName + "</td>");
25             sb.Append("<td>" + model.CCount + "</td>");
26             sb.Append("<td><a href='Update.aspx?id=" + model.CId + "'>修改</td>");
27             sb.Append("<td><a href='Delete.ashx?id=" + model.CId + "'>删除</td>");
28             sb.Append("</tr>");
29         }
30         return sb.ToString();
31     }
32 }

然后先写增加 吧!要不然一会辛辛苦苦写的数据 都删完了!

这里完全可以把 增加 写到 list页面的,太懒了,回头改下

前台:

View Code

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddInfo.aspx.cs" Inherits="AddInfo" %>
 2
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <title></title>
 8 </head>
 9 <body>
10     <form id="form1" method="post" action="AddInfo.aspx">
11     <div>
12        班级名称: <input type="text" name="txtCName" value="" /><br />
13        班级人数: <input type="text" name="txtCCount" value="" /><br />
14         <input type="hidden" name="isPostBack" value="2" />
15         <input type="submit" name="btnAdd" value="保存" />
16     </div>
17     </form>
18 </body>
19 </html>

后台:

View Code

 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
 8 public partial class AddInfo : System.Web.UI.Page
 9 {
10     protected void Page_Load(object sender, EventArgs e)
11     {
12         string name = Request.Form["txtCName"];//txtCCount  isPostBack
13         string countstr = Request.Form["txtCCount"];
14         string ispostBack=Request.Form["isPostBack"];
15         if (!string.IsNullOrEmpty(ispostBack))
16         {
17             int count = 0;
18             if (int.TryParse(countstr,out count))
19             {
20                 ClassBll.ClassBll bll = new ClassBll.ClassBll();
21                 ClassModel.ClassModels model = new ClassModel.ClassModels();
22                 model.CName = name;
23                 model.CCount = count;
24                 if (bll.AddInfo(model)>0)
25                 {
26                     Response.Write("<script type='text/javascript'>alert('添加成功!');window.location='List.aspx'</script>");
27                 }
28                 else
29                 {
30                     Response.Write("添加失败!");
31                 }
32
33             }
34         }
35     }
36 }

该写删除了 一个一般处理程序搞定!

View Code

 1 <%@ WebHandler Language="C#" Class="Delete" %>
 2
 3 using System;
 4 using System.Web;
 5
 6 public class Delete : IHttpHandler {
 7
 8     public void ProcessRequest (HttpContext context) {
 9         context.Response.ContentType = "text/html";
10         string id=context.Request.QueryString["id"];
11         if (!string.IsNullOrEmpty(id))
12         {
13             int sid = 0;
14             if (int.TryParse(id,out sid))
15             {
16                 ClassBll.ClassBll bll = new ClassBll.ClassBll();
17
18                 if (bll.DeleteInfo(sid)>0)
19                 {
20                     context.Response.Write("<script type='text/javascript'>alert('删除成功!');window.location='List.aspx'</script>");
21                 }
22                 else
23                 {
24                     context.Response.Write("删除失败!");
25                 }
26             }
27         }
28     }
29
30     public bool IsReusable {
31         get {
32             return false;
33         }
34     }
35
36 }

最后就是修改了,这个才是有点意思的

前台:

View Code

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Update.aspx.cs" Inherits="Update" %>
 2
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head runat="server">
 6     <title></title>
 7 </head>
 8 <body>
 9     <form id="form1" method="post" action="Update.aspx">
10     <div>
11         班级名称:
12         <%--用方法返回一个字符串--%>
13         <%-- <input type="text" name="txtCName" value="<%=CCNameInfo() %>" /><br />--%>
14         <input type="text" name="txtCName" value="<%=model.CName %>" /><br />
15         班级人数:
16         <input type="text" name="txtCCount" value="<%=model.CCount %>" /><br />
17         <input type="hidden" name="isPostBack" value="<%=model.CId %>" />
18         <input type="submit" name="btnUpdate" value="保存" />
19     </div>
20     </form>
21 </body>
22 </html>

后台:

View Code

 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
 8 public partial class Update : System.Web.UI.Page
 9 {
10     ClassBll.ClassBll bll = new ClassBll.ClassBll();
11     protected  ClassModel.ClassModels model = new ClassModel.ClassModels();
12     protected void Page_Load(object sender, EventArgs e)
13     {
14         string isPostback = Request.Form["isPostBack"];
15         //如果是准备提交保存
16         if (!string.IsNullOrEmpty(isPostback))
17         {
18             int idCount = 0;
19             if (int.TryParse(isPostback,out idCount))
20             {
21                 string cName = Request.Form["txtCName"];// txtCName txtCCount
22                 string cCount = Request.Form["txtCCount"];
23                 model.CId = idCount;
24                 model.CName = cName;
25                 model.CCount =Convert.ToInt32(cCount);
26                 if (bll.UpdateInfo(model)>0)
27                 {
28                     Response.Write("<script type='text/javascript'>alert('保存成功!');window.location='List.aspx'</script>");
29                 }
30                 else
31                 {
32                     Response.Write("修改失败!");
33                 }
34             }
35         }
36         else//如果是第一次访问
37         {
38             string id = Request.QueryString["id"];
39
40             int idcount = 0;
41             if (int.TryParse(id, out idcount))
42             {
43                 model.CId = idcount;
44                 //查寻数据并存到model中
45                 model = bll.GetInfoFromId(model);
46             }
47         }
48
49
50
51     }
52     //protected string CId()
53     //{
54     //    return model.CId.ToString();
55     //}
56     //protected string CCountInfo()
57     //{
58     //    return model.CCount.ToString();
59     //}
60     //protected string CCNameInfo()
61     //{
62     //    return model.CName;
63     //}
64 }

其实 修改 和 添加完全可以共用一个页面,或者一个div就行了,这里我就分开写了,看着简单点!

对了别忘了配置webconfig 哦!

View Code

 1 <?xml version="1.0"?>
 2 <!--
 3   有关如何配置 ASP.NET 应用程序的详细信息,请访问
 4   http://go.microsoft.com/fwlink/?LinkId=169433
 5   -->
 6 <configuration>
 7   <connectionStrings>
 8     <add name="sql" connectionString="Data Source=.;Initial Catalog=ProManager;Integrated Security=true;"/>
 9   </connectionStrings>
10   <system.web>
11     <compilation debug="true" targetFramework="4.0"/>
12   </system.web>
13 </configuration>

这样就大功搞成了,挺简单的吧!

转载于:https://www.cnblogs.com/zhaozhengyan/archive/2012/04/09/add-select.html

回味手写三层-增删改查相关推荐

  1. BS(三层)—增删改查——Web窗体(aspx)版本

    上一篇我们用一般处理程序写了(ashx)写了一遍增删改查,今天我们将用Web窗体(aspx)写一遍增删改查.我们平时写的时候到底用一般处理程序呢?还是用Web窗体呢? 简单来说web窗体(aspx)是 ...

  2. 使用EF框架实现MVC的增删改查功能!!!Entity Framework

    一.什么是EF? ADO.NETEntity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案.ADO.NET Entity Fram ...

  3. express+mongodb+vue实现增删改查-全栈之路

    vue element mongodb express 效果图 前言 最近一直想学下node,毕竟会node的前端更有市场.但是光看不练,感觉还是少了点什么,就去github上看别人写的项目,收获颇丰 ...

  4. mysql源生插入数据_php+mysql源生连接数据库和增删改查数据

    php+mysql源生连接数据库和增删改查数据 新建一个init.php文件,执行链接数据库.内容如下 header("Content-type: text/html; charset=ut ...

  5. 带头节点单链表的增删改查

    单链表有很多结构循环单链表,有头节点的单链表,无头节点的单链表,双节点单链表,以下源码是以有一个头节点的单链表为例写的增删改查的各种功能,就是下图 然后各个注释也在函数后面写着,这玩意确实还挺难,源码 ...

  6. mysql查看修改记录_(转)MySql中监视增删改查和查看日志记录

    转载地址为:http://blog.51cto.com/hades02/1641652 首先在命令行输入 show global variables like '%general%' ,然后出现下面的 ...

  7. C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)

    说点什么.. 呃 也有半个月没更新了. 本来这篇的Demo早就写完了,文章也构思好了.迟迟没发布..是因为实在太忙.. 项目要上线..各种  你们懂的.. 正赶上自己十一人生大事..结婚..所以..忙 ...

  8. JAVAWEB增删改查武林秘籍

    增删改查武林秘籍 学之受用无穷,可在30分钟内写完增删改查所有后台代码 1.项目搭建 1:创建一个maven 带骨架webapp的项目 2:创建表:book表(你所要增删改查的表) 并且使用idea ...

  9. Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。

    我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...

  10. c语言 双向链表增删修查,手写双链表,并实现增删改查

    手写双链表,并实现增删改查 public class DoublyLinkedListT { // 一个空的头节点 private final Node head = new Node(null); ...

最新文章

  1. 穿上就能凉快近5°C,华中大浙大夏日“避暑神器”登Science
  2. redis优雅的批量删除key
  3. 索爱麦克风免驱动的语音录入测试
  4. 读取文件:TypeError: an integer is required (got type str)
  5. 机器学习实战-SVM算法-27
  6. Java学习路线详解
  7. [转]Newtonsoft JSON how to dynamically change the date format?
  8. P5039 [SHOI2010]最小生成树(网络流)
  9. CAS 单点登录模块学习
  10. 隐式反馈的去噪,模型取得巨大提升!
  11. 9.Shell 编程从入门到精通 --- 进程
  12. file_operation(文件操作)file(文件)inode(节点)
  13. 【软考软件评测师】2018年下案例分析历年真题
  14. pb生成pbtxt时出错
  15. 小学计算机课flash的教案,信息技术flash教案
  16. 2015中国十大域名注册商排名
  17. 数据中心设计方案 实例,数据中心网络设计方案
  18. 【C++】运算符重载/函数的返回值为解引用
  19. C++:实现量化基础互换利率basis swap rate helpers测试实例
  20. spark.reducer.maxReqsInFlight和spark.reducer.maxBlocksInFlightPerAddress

热门文章

  1. CentOS 7.2 rpm 安装 Mysql 5.7
  2. jq向php文件传json,jQuery向后台传入json格式数据的方法
  3. idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  4. 阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
  5. Python编程学习笔记:列表
  6. offset,client,scroll的学习记录
  7. MongoDB数据库的索引操作(转)
  8. 课程设计第一次实验总结
  9. Codeforces Round #102 (Div. 1) D Help Shrek and Donkey 2
  10. day23 python学习 类 人狗大战