asp.net一般处理程序对数据库的操作

一、新建一个网站,在网站下面添加一个一般处理程序DemoHandler.ashx,代码如下:

<%@ WebHandler Language="C#" Class="DemoHandler" %>

using System;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Text;

public class DemoHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/html";
        //context.Response.WriteFile("1.jpg");
        StringBuilder sb = new StringBuilder();//拼接字符串用


        sb.Append("<html><head></head><body>");



        #region 拼接table
        //拼接表头 表头要用<th></th>标签
        sb.Append("<table><tr><th>Id</th><th>UserNumber</th><th>PassWord</th><th>ZhanMing</th><th>操作</th></tr>");
        //读取数据库中的数据 用三层
        string str = ConfigurationManager.ConnectionStrings["Pwd"].ConnectionString;
        using (SqlConnection conn=new SqlConnection (str))
        {
            conn.Open();
            string sql = "select *from 用户名和密码";
            using (SqlCommand cmd=new SqlCommand (sql,conn))
            {
                using (var reader=cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        //拼接字符串
                        sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td> <td><a href='ShowDetial.ashx?id={0}' > 详情</a></td></tr>",
                            reader.GetInt32(0), reader["UserName"], reader["PassWord"], reader["zhanming"]);
                    }
                }

            }
        }
        sb.Append("</table>");

        #endregion
        sb.Append("</body></html>");
            context.Response.Write(sb.ToString());

    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

二、打开web.config,在里面将连接数据库字符串 写入:

<?xml version="1.0" encoding="utf-8"?>

<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>

  <connectionStrings>
    <add name="Pwd" connectionString="server=WIN7U-20170517Z;uid=sa;pwd=123456;database=Pwd" />
  </connectionStrings>
    <system.web>
      <compilation debug="true" targetFramework="4.5.2" />
      <httpRuntime targetFramework="4.5.2" />
    </system.web>

</configuration>

当点击 操作的“详情”时,跳转到ShowDetil.ashx页面

代码如下:

<%@ WebHandler Language="C#" Class="ShowDetil" %>

using System;
using System.Web;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.IO;

public class ShowDetil : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/html";
        //context.Response.Write("Hello World");

        StringBuilder sb = new StringBuilder();//拼接字符串

        //需要拿到当前的ID
        string id= context.Request.QueryString["id"];
        int qid = int.Parse(id);//把他转换为整形
                                //下面链接数据库来获取ID
        string strLink = ConfigurationManager.ConnectionStrings["Pwd"].ConnectionString;//存放连接字符串
        string sql = "select *from 用户名和密码 where id=@id ";

        using (SqlDataAdapter adapter=new SqlDataAdapter (sql,strLink))
        {
            //传递参数
            adapter.SelectCommand.Parameters.Add("@id", qid);

            //在该网页中填充一个表格
            DataTable dt = new DataTable();
            adapter.Fill(dt);

            //下面需要拼接表格了 我们可以写在一个html模板中,所以可以新建一个HTML模板

            sb.AppendFormat("<tr><td>ID:</td><td>{0}</td></tr>", dt.Rows[0]["Id"]);//id信息
            sb.AppendFormat("<tr><td>UserName:</td><td>{0}</td></tr>", dt.Rows[0]["UserName"]);
            sb.AppendFormat("<tr><td>PassWord:</td><td>{0}</td></tr>", dt.Rows[0]["PassWord"]);
            sb.AppendFormat("<tr><td>ZhanMing:</td><td>{0}</td></tr>", dt.Rows[0]["zhanming"]);
        }

        //把HTML模板读取出来,然后替换数据占位符
        //把相对于网站根目录的路径转成磁盘上的绝对路径
        string path= context.Request.MapPath("/ShowDetailTemp.html");
        string textTemp=   File.ReadAllText(path);//将整个HTML模板读出来赋给textTemp
        string result= textTemp.Replace(" @StrTrBody", sb.ToString());
        context.Response.Write(result);




    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

当鼠标点击 详情 时,显示的页面可以写在一个html 模板中,代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <meta charset="utf-8" />
</head>
<body>
    <table>
        @StrTrBody 
    </table>
</body>
</html>
原文地址:https://www.cnblogs.com/xiaoyaohan/p/9805956.html