2013-09-25 13:08:59

一、准备工作

  首先创建一个数据库,如创建“试用期公务员管理”数据库;再创建一个Comm.cs类,添加代码如下:

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

namespace Business
{
    /// <summary>
    /// 通用类
    /// </summary>
    public class Comm
    {
        /// <summary>
        /// 通过DH获取Code/Chinese
        /// </summary>
        /// <param name="DH">DH</param>
        /// <returns>返回DataTable</returns>
        public static DataTable GetCodeByDH(string DH)
        {
            SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CNHRConnectionStrings"].ConnectionString);

try
            {
                conn.Open();

//sda.SelectCommand = GenerateInsertCommand(conn, dropYear.SelectedValue, "%" + UnitName + "%", unsub, sub, strlock, base.AccountID);//
                SqlCommand cmd = new SqlCommand("根据DH获取代码表", conn);
                cmd.CommandType = CommandType.StoredProcedure;

SqlParameter para1 = new SqlParameter("@DH", SqlDbType.NVarChar);
                para1.Value = DH;
                cmd.Parameters.Add(para1);

SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                adapter.Fill(dt);

return dt;
            }
            finally
            {
                conn.Close();
            }
        }

}

二、数据获取

1、SQL中,在存储过程中新建“数据获取”,更改红色高亮部分。

USE [试用期公务员管理]
GO
/****** Object:  StoredProcedure [dbo].[数据获取]    Script Date: 2013/9/25 13:07:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
ALTER(先Create) PROCEDURE [dbo].[数据获取]
    -- Add the parameters for the stored procedure here
    @表名 nvarchar(50),
    @条件 nvarchar(100),
    @字段名 nvarchar(100),
    @排序字段    nvarchar(100)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

-- Insert statements for procedure here
    declare @sql nvarchar(max)
    set @sql = 'select * from '+@表名+' where '+@字段名+' = '''+@条件 +''' order by '+@排序字段+''
    exec sp_executesql @sql
END

2、在Comm.cs类中,添加“获取数据”方法:

/// <summary>
        /// 获取数据
        /// </summary>
        /// <param name="_表名">表名</param>
        /// <param name="_字段名">字段名</param>
        /// <param name="_条件">条件</param>
        /// <param name="_排序字段">排序字段</param>
        /// <returns>返回DataTable</returns>
        public static DataTable 获取数据(string _表名, string _字段名, string _条件, string _排序字段)
        {
           
SqlConnection conn = new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CNHRConnectionStrings"].ConnectionString);

try
            {
                conn.Open();

//sda.SelectCommand = GenerateInsertCommand(conn,
dropYear.SelectedValue, "%" + UnitName + "%", unsub, sub, strlock,
base.AccountID);//
                SqlCommand cmd = new SqlCommand("数据获取", conn);
                cmd.CommandType = CommandType.StoredProcedure;

SqlParameter para1 = new SqlParameter("@表名", SqlDbType.NVarChar);
                para1.Value = _表名;
                cmd.Parameters.Add(para1);

SqlParameter para2 = new SqlParameter("@字段名", SqlDbType.NVarChar);
                para2.Value = _字段名;
                cmd.Parameters.Add(para2);

SqlParameter para3 = new SqlParameter("@条件", SqlDbType.NVarChar);
                para3.Value = _条件;
                cmd.Parameters.Add(para3);

SqlParameter para4 = new SqlParameter("@排序字段", SqlDbType.NVarChar);
                para4.Value = _排序字段;
                cmd.Parameters.Add(para4);

SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                adapter.Fill(dt);

return dt;

}
            finally
            {
                conn.Close();
            }
        }

三、数据更新

1、SQL中,在存储过程中新建“数据更新”,更改红色高亮部分。

USE [试用期公务员管理]
GO
/****** Object:  StoredProcedure [dbo].[数据更新]    Script Date: 2013/9/25 13:17:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[数据更新]
    -- Add the parameters for the stored procedure here
    @ID uniqueidentifier,
    @表名 nvarchar(max),
    @更新值 nvarchar(max)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

-- Insert statements for procedure here
    declare @sql nvarchar(max)
    set @sql = 'update '+@表名+' set '+@更新值+' where ID = '''+cast(@ID as nvarchar(max))+''' '
    exec sp_executesql @sql
END

2、在Comm.cs类中,添加“更新数据”方法:

/// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="_表名">表名</param>
        /// <param name="_字段名">字段名</param>
        /// <param name="_条件">条件</param>
        /// <param name="_排序字段">排序字段</param>
        /// <returns>返回DataTable</returns>
        public static int 更新数据(string ID, string 表名, string 更新值)
        {
           
SqlConnection conn = new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CNHRConnectionStrings"].ConnectionString);

try
            {
                conn.Open();

//sda.SelectCommand = GenerateInsertCommand(conn,
dropYear.SelectedValue, "%" + UnitName + "%", unsub, sub, strlock,
base.AccountID);//
                SqlCommand cmd = new SqlCommand("[数据更新]", conn);
                cmd.CommandType = CommandType.StoredProcedure;

SqlParameter para1 = new SqlParameter("@ID", SqlDbType.UniqueIdentifier);
                para1.Value = new Guid(ID);
                cmd.Parameters.Add(para1);

SqlParameter para2 = new SqlParameter("@表名", SqlDbType.NVarChar);
                para2.Value = 表名;
                cmd.Parameters.Add(para2);

SqlParameter para3 = new SqlParameter("@更新值", SqlDbType.NVarChar);
                para3.Value = 更新值;
                cmd.Parameters.Add(para3);

return cmd.ExecuteNonQuery();

}
            finally
            {
                conn.Close();
            }
        }

四、数据新增

1、SQL中,在存储过程中新建“数据新增”,更改红色高亮部分。

USE [试用期公务员管理]
GO
/****** Object:  StoredProcedure [dbo].[数据新增]    Script Date: 2013/9/25 13:20:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[数据新增]
    -- Add the parameters for the stored procedure here
    @表名 nvarchar(max)
    ,@新增字段 nvarchar(max) --id,人员id,……
    ,@新增值 nvarchar(max)  --'aa','bb'
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

-- Insert statements for procedure here
    declare @sql nvarchar(max)
    set @sql = 'insert into '+@表名+' ('+@新增字段+') select '+@新增值+' '
    exec sp_executesql @sql
END

2、在Comm.cs类中,添加“新增数据”方法:

/// <summary>
        /// 新增数据
        /// </summary>
        /// <param name="_表名">表名</param>
        /// <param name="_字段名">字段名</param>
        /// <param name="_条件">条件</param>
        /// <param name="_排序字段">排序字段</param>
        /// <returns>返回DataTable</returns>
        public static int 新增数据(string _表名, string 新增字段, string 新增值)
        {
           
SqlConnection conn = new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CNHRConnectionStrings"].ConnectionString);

try
            {
                conn.Open();

//sda.SelectCommand = GenerateInsertCommand(conn,
dropYear.SelectedValue, "%" + UnitName + "%", unsub, sub, strlock,
base.AccountID);//
                SqlCommand cmd = new SqlCommand("[数据新增]", conn);
                cmd.CommandType = CommandType.StoredProcedure;

SqlParameter para1 = new SqlParameter("@表名", SqlDbType.NVarChar);
                para1.Value = _表名;
                cmd.Parameters.Add(para1);

SqlParameter para2 = new SqlParameter("@新增字段", SqlDbType.NVarChar);
                para2.Value = 新增字段;
                cmd.Parameters.Add(para2);

SqlParameter para3 = new SqlParameter("@新增值", SqlDbType.NVarChar);
                para3.Value = 新增值;
                cmd.Parameters.Add(para3);

return cmd.ExecuteNonQuery();

}
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }

五、删除数据

1、SQL中,在存储过程中新建“数据删除”,更改红色高亮部分。

USE [试用期公务员管理]
GO
/****** Object:  StoredProcedure [dbo].[数据删除]    Script Date: 2013/9/25 13:23:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[数据删除]
    -- Add the parameters for the stored procedure here
    @ID uniqueidentifier,
    @表名 nvarchar(max)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

-- Insert statements for procedure here
    declare @sql nvarchar(max)
    set @sql = 'delete '+@表名+' where ID = '''+cast(@ID as nvarchar(max))+''' '
    exec sp_executesql @sql
END
2、在Comm.cs类中,添加“删除数据”方法:

/// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="_表名">表名</param>
        /// <param name="_字段名">字段名</param>
        /// <param name="_条件">条件</param>
        /// <param name="_排序字段">排序字段</param>
        /// <returns>返回DataTable</returns>
        public static int 删除数据(string _表名, string ID)
        {
           
SqlConnection conn = new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CNHRConnectionStrings"].ConnectionString);

try
            {
                conn.Open();

//sda.SelectCommand = GenerateInsertCommand(conn,
dropYear.SelectedValue, "%" + UnitName + "%", unsub, sub, strlock,
base.AccountID);//
                SqlCommand cmd = new SqlCommand("数据删除", conn);
                cmd.CommandType = CommandType.StoredProcedure;

SqlParameter para1 = new SqlParameter("@表名", SqlDbType.NVarChar);
                para1.Value = _表名;
                cmd.Parameters.Add(para1);

SqlParameter para2 = new SqlParameter("@ID", SqlDbType.UniqueIdentifier);
                para2.Value = new Guid(ID);
                cmd.Parameters.Add(para2);

return cmd.ExecuteNonQuery();

}
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }

六、调用Comm.cs中的方法

  xxx=Comm.删除数据();

  yyy=Comm.更新数据();

七、DataGrid中,按钮编辑实现数据更新的另一种写法,不需要重新写一个专门的更新存储过程,直接调用公用的更新即可,如下:

  在存储过程中对应的类中,加类似这样的代码:

     /// <summary>
        /// 更新试用期人员
        /// </summary>
        /// <param name="AccountID">ID</param>
        /// <param name="_信息ID">信息</param>
        /// <param name="_用户名">用户名</param>
        /// <param name="_姓名">姓名</param>
        /// <param name="_性别">性别</param>
        /// <returns>返回受影响行数</returns>
        public static int UpdateAccount(string AccountID, string _信息ID, string _用户名, string _姓名, string _性别)
        {
            StringBuilder sb_UpdateValue = new StringBuilder();

sb_UpdateValue.AppendFormat("信息='{0}',", _信息ID);
            sb_UpdateValue.AppendFormat("用户名='{0}',", _用户名);
            sb_UpdateValue.AppendFormat("姓名='{0}',", _姓名);
            sb_UpdateValue.AppendFormat("性别='{0}',", _性别);

return Comm.更新数据(AccountID, "信息表", sb_UpdateValue.ToString());
        }

  在更新按钮的事件中代码如下:

    protected void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                AccountRule.UpdateAccount(ID, Drp信息.SelectedValue, txt用户名.Text.Trim(), txtName.Text.Trim(), DrpSex.SelectedValue);

      Response.Write("<script>alert('修改成功!');window.opener.location.href=window.opener.location.href;window.close();</script>");
            }
            catch (Exception ex)
            {
                OutInfo(ex.Message);
            }
        }

八、总结

  以上是一种通用的增删改查的方法,可以单独针对自己需要的方法创建SQL语句于存储过程中,并创建相应的类,进而实现调用。

存储过程及Comm.cs类的创建的更多相关文章

  1. 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等

    设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...

  2. 微软版的SqlHelper.cs类

    一,微软SQLHelper.cs类 中文版: using System; using System.Data; using System.Xml; using System.Data.SqlClien ...

  3. 微软SQLHelper.cs类 中文版

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

  4. 微软SQLHelper.cs类

    using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.Collect ...

  5. WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据

    WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据 WebForm1.aspx 页面 (原生AJAX请求,写法一) <%@ Page Langu ...

  6. WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据(转)

    WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据 WebForm1.aspx 页面 (原生AJAX请求,写法一) <%@ Page Langu ...

  7. AspNet Core Web 应用程序的启动 当项目中 没有Startup.cs 类如何设置启动 配置等等

    感叹: Core 16年6月1号 在中国宣布上线 到现在已经快经历两年时间了,目前版本已经到了2.0 就目前的前景来看,个人感觉 到2020年才可能有所起色,等到Core更成熟 个人看法:在.net这 ...

  8. 处女篇:自用C#后端SqlHelper.cs类

    自用SqlHelper.cs类,此类来自软谋教育徐老师课程SqlHelper.cs! using System; using System.Collections; using System.Coll ...

  9. ASP.NET Core 基础知识(三) Program.cs类

    ASP.NET Framework应用程序是严重依赖于IIS的,System.Web 中有很多方法都是直接调用的 IIS API,并且它还是驻留在IIS进程中的.而 ASP.NET Core 的运行则 ...

随机推荐

  1. Web service是什么?(转)

    我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上. 我把学习笔记和学习心得,放到网志上,欢迎指正. 今天先写一个最基本的问题,Web service到 ...

  2. oracle 回车、换行符

    1.回车换行符 chr(10)是换行符,chr(13)是回车, 增加换行符 select ' update ' || table_name ||       ' set VALID_STATE ='' ...

  3. 安装apache2.4.10

    一:依赖安装:apache依赖于apr,apr-util,pcre,所以需要先安装他,并且需要最新的 apr官网:http://apr.apache.org/download.cgi pcre官网:h ...

  4. Deepin Linux 安装JDK

    最近在自己的笔记本上安装了Deepin Linux,虽然使用过程中发现一些bugs,但是总体感觉还不错,准备把她作为开发系统使用.系统自带的JDK是Open JDK,但是在做JAVA开发的时候通常需要 ...

  5. kafka的一些名词

    broker.id 区kafka集群中每台机器的标识 log.dirs 日志的存放目录,这个最好不要放到/tmp目录下,因为kafka的已被消费和未被消费的数据也被当成“日志”存放到了日志目录,: l ...

  6. C#中的多态现象

    面向对象的特征封装.继承和多态.Polymorphism(多态性)来源于希腊单词,指“多种形态”.多态性的一个重要特征是方法的调用是在运行时确定而不是编译时.在.NET中用于实现多态性的关键词有vir ...

  7. 1.5.6 Filters

    Filters 过滤器filter应该跟在tokenizer或者另一个filter之后.因为它们将TokenStream作为输入源. <fieldType name="text&quo ...

  8. Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation

    程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...

  9. 【开源项目6】介绍MenuDrawer这个牛x的控件,实现左右出菜单,上下出菜单

    现在很多应用都很潇洒的从左边屏幕手势一划出个左边的隐藏菜单,右边一划出个隐藏菜单,上边一划出个隐藏菜单,下边一划出个隐藏菜单.或者像android的API16左右的激活列表项的功能.很多人肯定都很着迷 ...

  10. c++ STL:队列queue、优先队列priority queue 的使用

    说明:本文全文转载而来,原文链接:http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177644.html C++ Queues(队列) C ...