博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一般处理程序完成增删改查
阅读量:4913 次
发布时间:2019-06-11

本文共 9857 字,大约阅读时间需要 32 分钟。

以前在学校ASP.NET都是用控件(如gridview),今天第一次接触用一般处理程序(.ashx)实现单表增删改查。

百度云盘下载链接:http://pan.baidu.com/share/link?shareid=388570&uk=3627406265

前期准备:数据表如下:

SqlHelper文件,

View Code
1 private static readonly string conStr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString; 2         public static int ExecuteNonQuery(string sqlText, params SqlParameter[] paras) 3         { 4             using (SqlConnection conn=new SqlConnection(conStr) ) 5             { 6                 using (SqlCommand cmd=new SqlCommand(sqlText,conn)) 7                 { 8                     if (paras!=null) 9                     {10                         cmd.Parameters.AddRange(paras);11                     }12                     conn.Open();13                     return cmd.ExecuteNonQuery();14                 }15             }16         }17         public static object ExecuteScalar(string sqlText, params SqlParameter[] paras)18         {19             using (SqlConnection conn=new SqlConnection(conStr))20             {21                 using (SqlCommand cmd=new SqlCommand(sqlText,conn))22                 {23                     if (paras!=null)24                     {25                         cmd.Parameters.AddRange(paras);26                     }27                     conn.Open();28                     return cmd.ExecuteScalar();29                 }30             }31         }32         public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] paras)33         {34             SqlConnection conn=new SqlConnection(conStr);35             using (SqlCommand cmd=new SqlCommand(sqlText,conn))36             {37                 if (paras!=null)38                 {39                     cmd.Parameters.AddRange(paras);40                         41                 }42                43                 try44                 {45                     conn.Open();46                     return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);47 48                 }49                 catch (Exception)50                 {51                     conn.Close();52                     conn.Dispose();53                     throw;54                 }55             }             56         }57         public static DataTable ExecuteDataTable(string sqlText, params SqlParameter[] paras)58         {59             using (SqlDataAdapter da=new SqlDataAdapter(sqlText,conStr))60             {61                 if (paras!=null)62                 {63                     da.SelectCommand.Parameters.AddRange(paras);64                 }65                 DataTable dt = new DataTable();66                 da.Fill(dt);67                 return dt;68             }69         }

 

web.config添加connectionStrings节点

View Code
1 
2
3

 

  

一、登录:

1、新建登陆页面Login.htm:

View Code
1 
2
3
4
5
6
用户名:
密码
7

 

  

2、新建一般处理程序ProcessLogin.ashx

要点:右键添加一般处理程序即可

context.Response.ContentType = "text/html";是告诉浏览器,报文体内容解析为htmlstring html = System.IO.File.ReadAllText(context.Request.MapPath("Login.htm"));读取Login.htm内容,存到字符串中

  

View Code
1 //告诉浏览器,报文体内容解析为html 2         context.Response.ContentType = "text/html"; 3         var name=context.Request.Form["userName"]; 4         var pwd=context.Request.Form["pwd"]; 5         string sqlText="select count(*) from T_Student where  name=@name and password=@password"; 6         SqlParameter[] paras=new SqlParameter[]{ 7             new SqlParameter("@name",name), 8             new SqlParameter("@password",pwd) 9         };10         //查询用户名密码是否正确11         int i = (int)Helper.SQLHelper.ExecuteScalar(sqlText, paras);12         if (i>0)13         {14             context.Response.Redirect("UserList.ashx");15         }16         else17         {18             //如果错误,则重新输入Login.htm页面,并保存用户名19             string html = System.IO.File.ReadAllText(context.Request.MapPath("Login.htm"));20             html = html.Replace("name='userName'", "name='userName' value='"+name+"'");21             context.Response.Write(html);22         }

 

  

二、用户信息列表

1、新建UserList.htm

要点:该页面作为用户信息列表的模版,写好表格表头后,加@DataRow,便于在一般处理程序用替换@DataRow。

View Code
1 
2
3
4
5
8
11
14
17
18
19 @DataRow20
6 编号 7 9 用户名10 12 密码13 15 操作16
21

 

  

2、新建UserList.ashx

要点,获取模版UserList.htm字符串,将数据库用户信息读取出来,遍历追加到StringBuilder,并将@DataRow替换。在详情、删除、修改超链接中分别填写好跳转地址

View Code
1 context.Response.ContentType = "text/html"; 2         string sqlText = "select * from T_Student"; 3         DataTable dt = Helper.SQLHelper.ExecuteDataTable(sqlText); 4         //读取模版UserList.htm内容 5         string temp = File.ReadAllText(context.Server.MapPath("UserList.htm")); 6         StringBuilder sb = new StringBuilder(); 7         foreach (DataRow item in dt.Rows) 8         { 9             //追加用户信息和操作10             sb.AppendFormat(@"{0}{1}{2}11                                 12                                     详情13                                     删除14                                     修改15                                 16                               ", item["id"],item["name"],item["password"]); 17         }18         //将@DataRow替换为StringBuilder内容19         temp=temp.Replace("@DataRow",sb.ToString());20         context.Response.Write(temp);

 

  

3、登录成功后,用post方式,将报文提交到UserList.ashx,返回相应报文。效果如下。

三、查看用户详情。

1、添加ShowUserInfo.htm模版

要点:因为编号不需显示,但需要用编号查询用户信息。所以把id放到隐藏域中。<input type="hidden" name="id" />

View Code
1 2     
3
4
5
用户名: @userName
密码: @password

 

  

2、ShowUserInfo.ashx

View Code
1 context.Response.ContentType = "text/html"; 2         //获取Get传递过来的id 3         int id = context.Request.QueryString["id"] == null ? 0 : int.Parse(context.Request.QueryString["id"]); 4         if (id>0) 5         { 6             string sqlText = "select name,password from dbo.T_Student where id=@id"; 7             //从数据库根据id获取用户信息 8             DataTable dt = Helper.SQLHelper.ExecuteDataTable(sqlText,new SqlParameter("@id",id)); 9             //获取ShowUserInfo.htm页面内容10             string temp = File.ReadAllText(context.Server.MapPath("ShowUserInfo.htm"));11             //替换ShowUserInfo.htm页面内容12             temp = temp.Replace("@userName",dt.Rows[0]["name"].ToString());13             temp = temp.Replace("@password", dt.Rows[0]["password"].ToString());14             context.Response.Write(temp);15         }

 

  

3、在UserList.ashx点击详情,效果如下

四、删除用户。

1、点击删除前,提示用户(在UserList.html中用Jquery实现)

View Code
1  2     

 

  

2、DeleteUser.ashx

View Code
1 context.Response.ContentType = "text/html"; 2         //获取Get传递过来的id 3         int id = context.Request.QueryString["id"] == null ? 0 : int.Parse(context.Request.QueryString["id"]); 4         if (id>0) 5         { 6             string sqltext = "delete from T_Student where id=@id"; 7             //根据id删除用户 8             int i=Helper.SQLHelper.ExecuteNonQuery(sqltext, new SqlParameter("@id",id)); 9             if (i>0)10             {11                 //删除成功则跳转到用户信息列表页12                 context.Response.Redirect("UserList.ashx");13             }14             else15             {16                 context.Response.Write("删除失败");17             }18         }

 

  

五、修改用户信息:

1、EditUser.htm

View Code
1 
2
3
4
5
6
7
用户名:
密码
8

 

  

2、EditUser.ashx显示要修改的用户信息。

View Code
1 context.Response.ContentType = "text/html"; 2         int id = context.Request.QueryString["id"] == null ? 0 : int.Parse(context.Request.QueryString["id"]); 3         if (id>0) 4         { 5             string sqlText = "select name,password from T_Student where id=@id"; 6             DataTable dt = Helper.SQLHelper.ExecuteDataTable(sqlText, new SqlParameter("@id", id)); 7             string temp=File.ReadAllText(context.Server.MapPath("EditUser.htm")); 8             temp=temp.Replace("@id",id.ToString()); 9             temp=temp.Replace("@name",dt.Rows[0]["name"].ToString());10             temp=temp.Replace("@pwd",dt.Rows[0]["password"].ToString());11             context.Response.Write(temp);12         }

 

  

3、ProcessEdit.ashx处理修改

View Code
1 context.Response.ContentType = "text/html"; 2         int id = context.Request.Form["id"] == null ? 0 : int.Parse(context.Request.Form["id"]); 3         if (id>0) 4         { 5             string name = context.Request.Form["userName"]; 6             string password = context.Request.Form["password"]; 7             string sqltext = "update T_Student set name=@name,password=@password where id=@id"; 8             SqlParameter[] paras = new SqlParameter[]{ 9                 new SqlParameter("@id",id),10                 new SqlParameter("@name",name),11                 new SqlParameter("@password",password)12             };13             int i = Helper.SQLHelper.ExecuteNonQuery(sqltext,paras);14             if (i>0)15             {16                 context.Response.Redirect("UserList.ashx");17             }18             else19             {20                 context.Response.Write("修改失败");21             }22         }

 

 

转载于:https://www.cnblogs.com/CoderO3/archive/2013/03/15/2962028.html

你可能感兴趣的文章
FCC 基础JavaScript 练习7
查看>>
真的要听妈妈的话。
查看>>
bzoj4873: [Shoi2017]寿司餐厅
查看>>
结对-航空购票系统-开发过程
查看>>
分支语句
查看>>
VBA语句 - 判断语句
查看>>
Android开发代码规范(转)
查看>>
生成函数学习笔记
查看>>
localtime函数时区问题
查看>>
MYSQL分页limit速度太慢优化方法
查看>>
鼎捷智能制造方案 从经营视角实现智能化运营
查看>>
[LeetCode 112 113] - 路径和I & II (Path Sum I & II)
查看>>
关于SpringCloud微服务架构概念的一点理解
查看>>
显示文件后缀
查看>>
Android 知识总汇
查看>>
字符转换
查看>>
codeforces水题100道 第十五题 Codeforces Round #262 (Div. 2) A. Vasya and Socks (brute force)
查看>>
PHP学习笔记 - 进阶篇(10)
查看>>
什么是测试策略?
查看>>
[深入React] 3.JSX的神秘面纱
查看>>