• 一般处理程序对数据库的怎删改查操作


    先建立一个一般处理程序,ListHandler.ashx,然后将数据库中的数据读取出来,并在网页中显示 代码如下:

    <%@ WebHandler Language="C#" Class="ListHandler" %>
    
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Text;
    
    public class ListHandler : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/html";
            //context.Response.Write("Hello World");
    
            StringBuilder sb = new StringBuilder();//拼接字符串
            sb.Append("<html><head></head><body><a href='addDate.html'>增加站点信息</a>");//APPend()要成对出现
                                                   //下面拼接表头
            sb.Append("<table><tr><th>Id</th>&nbsp;<th>站名</th>&nbsp;<th>站号</th>&nbsp;<th>登陆用户名</th>&nbsp;<th>登陆密码</th><th>操&nbsp;&nbsp;&nbsp;&nbsp;作</th></tr>");
    
            string str= ConfigurationManager.ConnectionStrings["BjQx"].ConnectionString;
            using (SqlConnection conn=new SqlConnection (str))
            {
                string sql = "select * from Tbl_ZhanMing";
                using (SqlCommand cmd=new SqlCommand (sql,conn))
                {
                    conn.Open();
                    using (var reader=cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            //拼接字符串
                            sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td>"+
                                "<td><a href='DetailHandler.ashx?Id={0}' target=_blank>详情</a>&nbsp;&nbsp;&nbsp;&nbsp;"+
                                "<a onclick='return confirm("是否删除?")'  href='Delete.ashx?Id={0}' >删除</a> "+
                                "&nbsp;&nbsp;&nbsp;&nbsp;<a onclick='return confirm("是否修改")'  href='EditShow.ashx?Id={0}&action=show'>修改</a></td></tr>",
                                reader.GetInt32(0), reader["站名"], reader["站号"], reader["登陆用户名"], reader["登陆密码"]);
                        }
                    }
                }
    
            }
            sb.Append("</table>");
            sb.Append("</body></html>");
            //把上面拼接的字符串写入网页中
            context.Response.Write(sb.ToString());//一般要写为sb.ToString()
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    点击 “详情”时,则跳转到'DetailHandler.ashx页面,该页面显示出所点击的站点信息,代码如下:

    <%@ WebHandler Language="C#" Class="DetailHandler" %>
    
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Text;
    using System.Data;
    using System.IO;
    
    public class DetailHandler : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/html";
            //context.Response.Write("Hello World");
            StringBuilder sb = new StringBuilder();
    
    
            //先接收点击“详情”发过来的信息
            string Id = context.Request.QueryString["Id"];
            int ZId = int.Parse(Id);
    
    
    
            //通过ID号,连接数据库并将内容显示在该网页中  用SQLDataAdapter
            string strLink = ConfigurationManager.ConnectionStrings["BjQx"].ConnectionString;
            string sql = "select * from Tbl_ZhanMing where Id=@Id";
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, strLink))
            {
                //传递参数过来
                adapter.SelectCommand.Parameters.Add("@Id", ZId);
                
                  
    
                //创建一个表格对象
                DataTable dt = new DataTable();
                adapter.Fill(dt);//在网页中填充表格
                                 //下面进行填充表格
                sb.AppendFormat("<tr><td>Id:</td><td>{0}</td></tr>", dt.Rows[0]["Id"]);
                sb.AppendFormat("<tr><td>站名:</td><td>{0}</td></tr>", dt.Rows[0]["站名"]);
                sb.AppendFormat("<tr><td>站号:</td><td>{0}</td></tr>", dt.Rows[0]["站号"]);
                sb.AppendFormat("<tr><td>登陆用户名:</td><td>{0}</td></tr>", dt.Rows[0]["登陆用户名"]);
                sb.AppendFormat("<tr><td>登陆密码:</td><td>{0}</td></tr>", dt.Rows[0]["登陆密码"]);
            }
            //写一个HTML模板
            string path = context.Request.MapPath("/showresult.html");
            string texttemp = File.ReadAllText(path);//将整个html网页赋值给他
            string result = texttemp.Replace("@NBBiJie", sb.ToString());
            context.Response.Write(result);
    
    
    
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

     当点击“增加站点信息”按钮时,则跳转到addDate.html 页面,在该HTML表单里写入<form id="frmAdd" action="AddDateHandle.ashx">,提交表单时则跳转到

    AddDateHandle.ashx页。

    addDate.html 页面代码如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <meta charset="utf-8" />
    </head>
    <body>
        <h1>请增加如下内容:</h1>
    <form id="frmAdd" action="AddDateHandle.ashx">
        <table>
            <tr>
                <td>站名:</td>
                <td>
                    <input type="text" name="zhanming" />
                </td>
            </tr>
            <tr>
                <td>站号:</td>
                <td>
                    <input type="text" name="zhanhao" />
                </td>
            </tr>
            <tr>
                <td>登陆用户名:</td>
                <td>
                    <input  type="text" name="username"/>
                </td>
            </tr>
            <tr>
                <td>登录密码:</td>
                <td>
                    <input type="text" name="password" />
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<input type="submit" value="提交" />
                </td>
                <td>
                    &nbsp;&nbsp; &nbsp;&nbsp;<input type="reset" value="重置" />
                </td>
            </tr>
        </table>
    </form>
    </body>
    </html>

    AddDateHandle.ashx一般处理程序页面代码如下:

    <%@ WebHandler Language="C#" Class="AddDateHandle" %>
    
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data.SqlClient;
    
    public class AddDateHandle : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/html";
            //context.Response.Write("Hello World");
            //拿到addDate.html上交来的数据
            string zhanming = context.Request["zhanming"];
            int zhanhao =int.Parse(context.Request["zhanhao"]);
            string username = context.Request["username"];
            string passsword = context.Request["password"];
    
            //接下来做数据库插入操作
            string str = ConfigurationManager.ConnectionStrings["BJQx"].ConnectionString;
            using (SqlConnection conn=new SqlConnection (str))
            {
                string sql = string.Format("insert into Tbl_ZhanMing (站名,站号,登陆用户名,登陆密码) values ('{0}',{1},'{2}','{3}') select * from Tbl_ZhanMing",zhanming,zhanhao,username,passsword);
               
                using (SqlCommand cmd=new SqlCommand (sql,conn))
                {
                    conn.Open();
                    int r= cmd.ExecuteNonQuery();
    
                }
    
            }
    
            context.Response.Redirect("ListHandler.ashx");
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    以上代码完成了对数据的增加,全部显示,和显示所点击那一条信息的详情的操作。

     当在ListHandler.ashx所显示的页面上,点击“删除”按钮时,则跳转到Delete.ashx页。此步骤完成对数据库表中的数据进行删除操作。该页面的代码如下:

    <%@ WebHandler Language="C#" Class="Delete" %>
    
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data.SqlClient;
    
    public class Delete : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
            //获取提交删除的Id
            string Id= context.Request["Id"];
            int delId = int.Parse(Id);
    
            //连接数据库进行删除操作
            string constr = ConfigurationManager.ConnectionStrings["BJQx"].ConnectionString;
            using (SqlConnection conn=new SqlConnection (constr))
            {
                string sql = "delete from Tbl_ZhanMing where Id=@Id";
                using (SqlCommand cmd=new SqlCommand (sql,conn))
                {
                    conn.Open();
                    cmd.Parameters.Add(new SqlParameter("@Id", delId));
                    int rows = cmd.ExecuteNonQuery();
                    if (rows>0)
                    {
                        //删除成功
                        context.Response.Redirect("ListHandler.ashx");
                    }
                    else
                    {
                            context.Response.Write("删除失败!");
                    }
                }
            }
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    一下代码对数据库列表进行修改操作,当点击“修改”按钮时,则跳转到EditShow.ashx,代码如下:

    <%@ WebHandler Language="C#" Class="Alter" %>
    
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Data;
    using System.IO;
    
    public class Alter : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/html";//   切记 此处要改为html,否则就把源码输出来了!
            //用于显示修改数据的
    
            if (context.Request["action"] == "show")
            {
    
                //先拿到需要修改的那一行的Id
                int altId = int.Parse(context.Request["Id"]);
                //建立数据库连接 填充网页一般用SqlDataAdapter
    
                string str = ConfigurationManager.ConnectionStrings["BjQx"].ConnectionString;
                string sql = "select *from Tbl_ZhanMing where Id=@Id";
                using (SqlDataAdapter adapter = new SqlDataAdapter(sql, str))
                {
                    //将ID传递过来
                    adapter.SelectCommand.Parameters.Add("@Id", altId);
                    //填充表格
                    DataTable dt = new DataTable();//创建一个表格对象
                    adapter.Fill(dt);
                    //直接在后台拼接字符串太麻烦,所以写一个模板 EditTemp.html
                    string strResult = File.ReadAllText(context.Request.MapPath("EditTemp.html"));
                    //File.ReadAllText()需要的是一个绝对路径
                    strResult = strResult.Replace("@txtZhanMing", dt.Rows[0]["站名"].ToString());//第一行站名这一列全部显示出来
                    strResult = strResult.Replace("@txtZhanHao", dt.Rows[0]["站号"].ToString());
                    strResult = strResult.Replace("@txtUserName", dt.Rows[0]["登陆用户名"].ToString());
                    strResult = strResult.Replace("@txtPassWord", dt.Rows[0]["登陆密码"].ToString());
                        strResult = strResult.Replace("@Id", dt.Rows[0]["Id"].ToString());
                        
                    context.Response.Write(strResult);
                }
            }
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    EditShow.ashx需要一个html模板EditTemp.html,代码如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <meta charset="utf-8" />
    </head>
    <body>
        <form method="post" action="EditProcess.ashx">
            <input type="hidden" name="hidId" value="@Id" />
            <table>
                <tr>
                    <td>站名:</td>
                    <td>
                        <input type="text" name="txtZhanMing" value="@txtZhanMing"/>
                    </td>
                </tr>
                <tr>
                    <td>站号:</td>
                    <td>
                        <input type="text" name="txtZhanHao" value="@txtZhanHao" />
                    </td>
                </tr>
                <tr>
                    <td>登陆用户名:</td>
                    <td>
                        <input type="text" name="txtUserName" value="@txtUserName"/>
                    </td>
                </tr>
                <tr>
                    <td>登录密码:</td>
                    <td>
                        <input type="text" name="txtPassWord" value="@txtPassWord" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="submit" value="修改" />
                    </td>
                </tr>
    
            </table>
    
        </form>
    </body>
    </html>

    EditTemp.html页面上,当点击“修改”按钮时,跳转到EditProcess.ashx,则可以直接对所选中的数据库列表进行修改操作。代码如下:

    <%@ WebHandler Language="C#" Class="EditProcess" %>
    
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data.SqlClient;
    
    public class EditProcess : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/html";
            //用于修改数据的
            //先拿到要修改的这一行的信息,不知道Id,因此只能单独取,我们知道name的值
            string txtZhanMing = context.Request["txtZhanMing"];
            int txtZhanHao = int.Parse(context.Request["txtZhanHao"]);
            string txtUserName = context.Request["txtUserName"];
            string txtPassWord = context.Request["txtPassWord"];
            int editId = int.Parse(context.Request["hidId"]);//通过网页的名字来取ID
            //建立数据库连接
            string str = ConfigurationManager.ConnectionStrings["BjQx"].ConnectionString;
            using (SqlConnection conn=new SqlConnection (str))
            {
                string sql = "update Tbl_ZhanMing set 站名=@txtZhanMing,站号=@txtZhanHao,登陆用户名=@txtUserName,登陆密码=@txtPassWord where Id=@Id";
                using (SqlCommand cmd=new SqlCommand(sql,conn))
                {
                    //将sql语句的参数全部给其赋值
                    cmd.Parameters.Add(new SqlParameter("@Id", editId));
                    cmd.Parameters.Add(new SqlParameter("@txtZhanMing", txtZhanMing));
                    cmd.Parameters.Add(new SqlParameter("@txtZhanHao", txtZhanHao));
                    cmd.Parameters.Add(new SqlParameter("@txtUserName", txtUserName));
                    cmd.Parameters.Add(new SqlParameter("@txtPassWord", txtPassWord));
                    conn.Open();
                    int r = cmd.ExecuteNonQuery();
                    if (r>0)
                    {
                        context.Response.Redirect("ListHandler.ashx");
                    }
                    else
                    {
                        context.Response.Write("修改失败!");
                    }
                }
            }
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    以上代码实现了对数据库的增删改查操作。

  • 相关阅读:
    spring boot banner设置关闭以及关闭特定的自动配置
    spring boot 初始及快速搭建
    spring scheduling 计划任务
    idea database 导入实体带注解
    idea mapper下的方法找不到 Invalid bound statement (not found)
    spring jwt token 认证
    spring event 事件
    FrontEnd-Basis-6th
    FrontEnd-Basis-5th
    FrontEnd-Basis-4th
  • 原文地址:https://www.cnblogs.com/xiaoyaohan/p/9843063.html
Copyright © 2020-2023  润新知