04-人员增删改查

案例:个人信息管理。

l 使用NVelocity的开发方式重写登录程序,把NVelocity封装成
RenderTemplate方法。
l 这种HttpHandler+ NVelocity的方式非常类似于PHP+smarty的开
发方式,也有利于理解asp.net mvc。HttpHandler就是Controller
,模板就是View, Controller不操作View的内部细节,只是把数
据给View,由View自己控制怎样显示。
l 字段:Id、姓名、年龄、个人网址(可以为空)。
l 列表页面和编辑界面:PersonList.aspx、
PersonEdit.aspx?Action=AddNew、
PersonEdit.aspx?Action=Edit&Id=2(在PersonEdit页面判断是
否传过来了save按钮来判断是加载还是保存。渲染页面的时候把
Action和Id保存在隐藏字段中。保存成功后Redirect回List页面)
l 进一步案例:有关联字段,比如班级,实现备注

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NVelocity.App;
using NVelocity.Runtime;
using NVelocity;

namespace CRUDTest1
{
    public class CommonHelper
    {
        /// <summary>
        /// 用data数据填充templateName模板,渲染生成html返回
        /// </summary>
        /// <param name="templateName"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string RenderHtml(string templateName, object data)
        {
             VelocityEngine vltEngine = new VelocityEngine();
            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//模板文件所在的文件夹
            vltEngine.Init();

            VelocityContext vltContext = new VelocityContext();
            vltContext.Put("Data", data);//设置参数,在模板中可以通过$data来引用

            Template vltTemplate = vltEngine.GetTemplate(templateName);
            System.IO.StringWriter vltWriter = new System.IO.StringWriter();
            vltTemplate.Merge(vltContext, vltWriter);

            string html = vltWriter.GetStringBuilder().ToString();
            return html;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace CRUDTest1
{
    public static class  SqlHelper
    {
        public static readonly string connstr =
            ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

        public static SqlConnection OpenConnection()
        {
            SqlConnection conn = new SqlConnection(connstr);
            conn.Open();
            return conn;
        }

        public static int ExecuteNonQuery(string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                return ExecuteNonQuery(conn, cmdText, parameters);
            }
        }

        public static object ExecuteScalar(string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                return ExecuteScalar(conn, cmdText, parameters);
            }
        }

        public static DataTable ExecuteDataTable(string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                return ExecuteDataTable(conn, cmdText, parameters);
            }
        }

        public static int ExecuteNonQuery(SqlConnection conn,string cmdText,
           params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteNonQuery();
            }
        }

        public static object ExecuteScalar(SqlConnection conn, string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteScalar();
            }
        }

        public static DataTable ExecuteDataTable(SqlConnection conn, string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
                    return dt;
                }
            }
        }

        public static object ToDBValue(this object value)
        {
            return value == null ? DBNull.Value : value;
        }

        public static object FromDBValue(this object dbValue)
        {
            return dbValue == DBNull.Value ? null : dbValue;
        }
    }
}

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

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

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  <connectionStrings>
    <add name="connstr" connectionString="Data Source=.;Initial Catalog=CRUDTest;User Id=sa;Password=123456;"></add>
  </connectionStrings>
</configuration>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

namespace CRUDTest1
{
    /// <summary>
    /// PersonList 的摘要说明
    /// </summary>
    public class PersonList : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            DataTable dt =
                SqlHelper.ExecuteDataTable("select * from T_Persons");
            //DataTable不是集合,所以无法foreach遍历,DataTable的Rows属性
            //代表表格中的数据行的集合(DataRow的集合),一般传递DataRowCollection
            //给模板方便遍历
            string html = CommonHelper.RenderHtml("PersonList.htm", dt.Rows);

            context.Response.Write(html);

            //MVC:
        }

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;

namespace CRUDTest1
{
    /// <summary>
    /// PersonEdit 的摘要说明
    /// </summary>
    public class PersonEdit : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            //PersonEdit.ashx?action=AddNew
            //PersonEdit.ashx?action=Edit&Id=3
            string action = context.Request["Action"];
            if (action == "AddNew")
            {
                //判断是否含有Save并且等于true,如果是的话就说明是点击【保存】按钮请求来的
                bool save = Convert.ToBoolean(context.Request["Save"]);
                if (save)//是保存
                {
                    string name = context.Request["Name"];
                    int age = Convert.ToInt32(context.Request["Age"]);
                    string email = context.Request["Email"];
                    SqlHelper.ExecuteNonQuery("Insert into T_Persons(Name,Age,Email) values(@Name,@Age,@Email)", new SqlParameter("@Name", name)
                        , new SqlParameter("@Age", age)
                        , new SqlParameter("@Email", email));
                    context.Response.Redirect("PersonList.ashx");//保存成功返回列表页面
                }
                else
                {
                    //string html = CommonHelper.RenderHtml("PersonEdit.htm", new { Name = "", Age = 20, Email = "@rupeng.com" });
                    //var data = new { Name = "", Age = 20, Email = "@rupeng.com" };
                    var data = new { Action = "AddNew", Person = new { Name = "", Age = 20, Email = "@rupeng.com" } };
                    string html = CommonHelper.RenderHtml("PersonEdit.htm", data);
                    context.Response.Write(html);
                }
            }
            else if (action == "Edit")
            {
                bool save = Convert.ToBoolean(context.Request["Save"]);
                if (save)
                {
                    string name = context.Request["Name"];
                    int age = Convert.ToInt32(context.Request["Age"]);
                    string email = context.Request["Email"];
                    long id = Convert.ToInt64(context.Request["id"]);
                    SqlHelper.ExecuteNonQuery("update T_Persons set [email protected],[email protected],[email protected] where [email protected]", new SqlParameter("@Name", name)
                        , new SqlParameter("@Age", age)
                        , new SqlParameter("@Email", email)
                        , new SqlParameter("@Id", id));
                    context.Response.Redirect("PersonList.ashx");//保存成功返回列表页面
                }
                else
                {
                    long id = Convert.ToInt64(context.Request["Id"]);
                    DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Persons where [email protected]", new SqlParameter("@Id", id));
                    if (dt == null || dt.Rows == null || dt.Rows.Count <= 0)
                    {
                        context.Response.Write("没有找到Id=" + id + "的数据");
                        return;
                    }
                    else if (dt.Rows.Count > 1)
                    {
                        context.Response.Write("找到多条Id=" + id + "的数据");
                    }
                    else
                    {
                        DataRow row = dt.Rows[0];
                        var data = new { Action = "Edit", Person = row };
                        string html = CommonHelper.RenderHtml("PersonEdit.htm", data);
                        context.Response.Write(html);
                    }
                }
            }
            else if (action == "Delete")
            {
                long id = Convert.ToInt64(context.Request["Id"]);
                SqlHelper.ExecuteNonQuery("delete from T_Persons where [email protected]", new SqlParameter("@Id", id));
                context.Response.Redirect("PersonList.ashx");
            }
            else
            {
                context.Response.Write("Action参数错误!");
            }
        }

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>人员列表</title>
</head>
<body>
<a href="PersonEdit.ashx?Action=AddNew">新增人员</a>
<table>
    <thead>
        <tr><td>编辑</td><td>删除</td><td>姓名</td><td>年龄</td><td>邮箱</td></tr>
    </thead>
    <tbody>
        #foreach($person in $Data)
        <tr><td><a href="PersonEdit.ashx?Action=Edit&Id=$person.Id">编辑</a></td><td><a href="PersonEdit.ashx?Action=Delete&Id=$person.Id">删除</a></td><td>$person.Name</td><td>$person.Age</td><td>$person.Email</td></tr>
        #end
    </tbody>
</table>
</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>
        #if($Data.Action="AddNew")
        新增用户
        #else
        编辑用户$Data.Person.Name
        #end
    </title>
</head>
<body>
<form action="PersonEdit.ashx" method="post">
    <input type="hidden" name="Action" value="$Data.Action" />
    <input type="hidden" name="Save" value="true" />
    <input type="hidden" name="Id" value="$Data.Person.Id" />
    <table>
        <tr><td>姓名:</td><td><input type="text" name="Name" value="$Data.Person.Name" /></td></tr>
        <tr><td>年龄:</td><td><input type="text" name="Age" value="$Data.Person.Age" /></td></tr>
        <tr><td>邮箱:</td><td><input type="text" name="Email" value="$Data.Person.Email" /></td></tr>
        <tr><td></td><td><input type="submit" value="保存"/></td></tr>
    </table>
</form>
</body>
</html>

时间: 2024-10-14 14:37:55

04-人员增删改查的相关文章

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =

作业员工信息表实现增删改查操作

有以下员工信息表 当然此表你在文件存储时可以这样表示 1 1,Alex Li,22,13651054608,IT,2013-04-01 现需要对这个员工信息文件,实现增删改查操作 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select  * from staff_table where dept = "IT" select  * from staff_table where enroll

基于SpringBoot开发一个Restful服务,实现增删改查功能

在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练.不过在看了很多关于SpringBoot的介绍之后,并没有想象中的那么难,于是开始准备学习SpringBoot. 在闲暇之余的时候,看了下SpringBoot实战以及一些大神关于SpringBoot的博客之后,开始写起了我的第一个SpringBoot的项目.在能够对SpringBoot进行一些简单的开发Re

浅谈增删改查的意义

从事开发一年以来,基本上都是在做一系列“增删改查”的功能,看似最简单的增删改查,却在所有的信息管理系统中发挥着最关重要的作用. 这一年的软件开发之旅,让我觉得开发是一件特别简单的事,无非就是一个界面上数据的增删改查,它可能就是针对一张单表的操作,了不起就是对几张表的增删改,so easy! 最近是越发感受到:信息管理系统的精髓,除了数据库设计外,就是“无比简单”的增删改查了! 为何这样说,其实跟随数据的轨迹,就能明白,任何一张表的数据都是“增”进来的,那么如何增?手动一条条录入是个不错的选择,可

1.hibernate七步走完成增删改查

一.hibernate框架介绍如下 1.框架=模板 2.Hibernate是对象模型与关系数据库模型之间的桥梁 3.hibernate持久化概念 什么是ORM ORM是对象关系映射,是一种数据持久化操作(增删改查), 它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过javabean对象去操作数据库中数据. 4.hiberante概念 hibernate就是采用orm对象关系映射技术的持久化开发框架. 5.hibernate优缺点及使用场合 1.优点 hibernate很强大

通过JDBC进行简单的增删改查

通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)

基于nodejs+express+mysql+webstorm+html的 增删改查

一.工具准备 Nodejs框架,WebStorm.Mysql服务.Navicat.此篇文章只讲项目的搭建过程,至于Nodejs,WebStorm.Mysql的下载.安装与配置网上资源很多,请自行查阅,本文重点讲述 增删改查,此文为学习笔记,我也是初学者,很多代码没有做过多解释,以免误导他人. Github 地址:https://github.com/Spqin/Nodejs_Websto_Mysql_CRUD 二.打开WebStorm创建项目-项目名称自定义,这里我按年月日做项目名称. 1.选怎

2017-6-1 Linq 基础查询 (增删改查)

用小型人员管理系统的项目实战来练习linq的基础增删改查: using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// users 的摘要说明 /// </summary> public partial class users { public string sexstr { get { return Convert.ToBoolean(

通过JDBC进行简单的增删改查(以MySQL为例) 目录

通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)

SQLite中的增删改查

虽然android提供了sql查询的封装方法,但是理解起来还是麻烦,所以我这里用sql语句来完成工作. 首先是建立一个类,继承SQLiteOpenHelper 这里面会建立一个数据库,并且初始化一个表.当然你可以建立多个数据库,等以后再自行建立表也可以 DatabaseHelper.java package com.kale.sql; import android.content.Context; import android.database.sqlite.SQLiteDatabase; im