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. MVC4数据注释与验证

    Using Validation Annotations Required必须项验证属性 [Required] public string FirstName { get; set; } [Requi ...

  2. 0c-37-ARC

    .什么是ARC? Automatic Reference Counting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入的最大的变革和最激动人心的变化.ARC是新的LLVM .0编 ...

  3. 基于jQuery带备忘录功能的日期选择器

    今天给大家分享一款基于jQuery带备忘录功能的日期选择器.这款日期控制带有备记忘录功能.有备忘录的日期有一个圆圈,单击圆圈显示备忘录.该实例适用浏览器:360.FireFox.Chrome.Safa ...

  4. HDU 4605 Magic Ball Game 树状数组

    题目大意很简单. 有一颗树(10^5结点),所有结点要么没有子结点,要么有两个子结点.然后每个结点都有一个重量值,根结点是1 然后有一个球,从结点1开始往子孙结点走. 每碰到一个结点,有三种情况 如果 ...

  5. <转>一道面试题比较synchronized和读写锁

    一.科普定义(原文:http://903497571.iteye.com/blog/1874752) 这篇博文的两个主角“synchronized”和“读写锁” 1)synchronized 这个同步 ...

  6. solr--搜索参数随笔

    1.默认搜索域.查询域的关系 qf字段的配置:query fields,指定solr从哪些field中搜索 在solrj中设置如下: params.setParam("qf", & ...

  7. [WinForm] VS2010的程序打包封装

    因为学习的要求,我需要把自己的程序进行打包封装,开始也是苦恼,没有找到很好的办法,但并没有放弃,终于发现了一个差不多的文章,于是摸索着进行,可喜的是是成功了,下面和大家分享一下. 第一步:前提是你已经 ...

  8. NSURLConnection & NSRULSession

    NSURLConnection & NSRULSession NSURLSession是NSURLConnection 的替代者,在2013年苹果全球开发者大会(WWDC2013)随ios7一 ...

  9. Json格式理解

    json格式中共有三个重要符号"[","{",":" 中括号和花括号的唯一区别就是:中括号不需要key,花括号必须有key

  10. Linux_内存查询

    查询磁盘使用情况: [root@css-management ~]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% Moun ...