SqlServer存储过程(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。

CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity]
(
@NewsTitle varchar(200),
@NewsContent varchar(4000),
@Creator varchar(50),
@LastNewsId int output,
@DepartId int
)
AS
BEGIN
SET NOCOUNT ON; insert into tbNewsAffiche(Title,Content,Creator,CreateTime,Updator,UpdateTime,DepartId)
values(@NewsTitle,@NewsContent,@Creator,getdate(),@Creator,getdate(),@DepartId) set @LastNewsId = IDENT_CURRENT('tbNewsAffiche')
END

存储过程方法体内定义及赋值:
declare @recordCount int
set @recordCount=0
====================================
增加:
存储过程

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_AddQueueNews] 脚本日期: 11/01/2013 15:40:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE proc [dbo].[PR_QueueNewsAffiche_AddQueueNews](@Content nvarchar(500),@NewsAfficheId int,@BeginTime datetime,@EndTime datetime,@Creator varchar(50),@CreateTime datetime,@Updator varchar(50),@UpdateTime datetime)
as
insert into tbQueueNewsAffiche([Content],NewsAfficheId,BeginTime,EndTime,Creator,CreateTime,Updator,UpdateTime) values(@Content,@NewsAfficheId,@BeginTime,@EndTime,@Creator,getdate(),@Updator,getdate());

对应DAL层后台代码:

/// <summary>
/// 添加
/// </summary>
/// <param name="newsInfo"></param>
/// <returns></returns>
public int Add(QueueNewsAffiche_NewsInfo newsInfo)
{
IDataParameter[] paramArray = new IDataParameter[]{
Db.GetParameter("@Content",DbType.String,newsInfo.Content),
Db.GetParameter("@NewsAfficheId",DbType.Int32,newsInfo.NewsAfficheId),
Db.GetParameter("@BeginTime",DbType.DateTime,newsInfo.BeginTime),
Db.GetParameter("@EndTime",DbType.DateTime,newsInfo.EndTime),
Db.GetParameter("@Creator",DbType.String,newsInfo.Creator),
Db.GetParameter("@CreateTime",DbType.DateTime,newsInfo.CreateTime),
Db.GetParameter("@Updator",DbType.String,newsInfo.Updator),
Db.GetParameter("@UpdateTime",DbType.DateTime,newsInfo.UpdateTime)
};
int returnValue = 0;
try
{
returnValue = Db.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, "PR_QueueNewsAffiche_AddQueueNews", paramArray);
}
catch (System.Exception e)
{
LogHelper.Error("添加时出错" + e.ToString());
}
return returnValue;
}

=======================================
删除:
存储过程

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_Delete] 脚本日期: 11/01/2013 15:46:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE PROCEDURE [dbo].[PR_QueueNewsAffiche_Delete](@Id int,@Result int output) //@Result为输出
AS
BEGIN
IF EXISTS(SELECT 1 FROM tbQueueNewsAffiche //判断是否有数据SELECT top 1 FROM tbQueueNewsAffiche WHERE Id = @Id 不存在用not exists
WHERE Id = @Id)
BEGIN
DELETE FROM tbQueueNewsAffiche
WHERE Id = @Id
set @Result=1;
END
else
begin
set @Result =0;
end
END

对应DAL层代码:

/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public int DeleteById(int id)
{
IDataParameter[] paramArray = new IDataParameter[]{
Db.GetParameter("@Result",DbType.Int32,ParameterDirection.Output), //输出参数
Db.GetParameter("@Id",DbType.Int32,id)
};
try
{
int effectedRows = Db.ExecuteSPNonQuery(ConnectionString, "PR_QueueNewsAffiche_Delete", paramArray);
int result = Field.GetOutPutParam(paramArray[0], 0);
return result;
}
catch (System.Exception ex)
{
Log.WriteUserLog("删除失败" + ex.ToString(), 0, 0, 0);
return 0;
}
}

================================
修改:
存储过程:

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_Update] 脚本日期: 11/04/2013 10:54:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE PROCEDURE [dbo].[PR_QueueNewsAffiche_Update]
(
@Id int,
@Content nvarchar(500),
@BeginTime datetime,
@EndTime datetime,
@Updator varchar(50)
)
AS
BEGIN
SET NOCOUNT ON; 这一句要注意:作用是不返回受影响的行数,一般做更新的不要设置,方便获取到返回的行数来判断是否更新成功。 update tbQueueNewsAffiche
set
[Content]=@Content,
BeginTime=@BeginTime,
EndTime=@EndTime,
Updator=@Updator,
UpdateTime=getdate()
where Id=@Id END

对应DAL层代码:

/// <summary>
/// 更新
/// </summary>
/// <param name="id">排队新闻id</param>
/// <param name="content"></param>
/// <param name="beginTime"></param>
/// <param name="endTime"></param>
/// <param name="updator"></param>
/// <returns></returns>
public int Update(int id,string content,DateTime beginTime,DateTime endTime,string updator)
{
IDataParameter[] paramArray = new IDataParameter[] {
Db.GetParameter("@Id",DbType.Int32,id),
Db.GetParameter("@Content",DbType.String,content),
Db.GetParameter("@BeginTime",DbType.DateTime,beginTime),
Db.GetParameter("@EndTime",DbType.DateTime,endTime),
Db.GetParameter("@Updator",DbType.String,updator)
}; int returnValue = 0;
try
{
returnValue = Db.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, "PR_NewsAfficheQueue_Update", paramArray);
}
catch (System.Exception ex)
{
LogHelper.Error("更新时出错{PR_NewsAfficheQueue_Update}" + ex.ToString());
}
return returnValue;
}

=================================
查询:
存储过程

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_GetAllNews] 脚本日期: 11/01/2013 15:53:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE proc [dbo].[PR_QueueNewsAffiche_GetAllNews](@NewsAfficheId int)
as
begin
SET NOCOUNT ON;
select
Id,
[Content],
NewsAfficheId,
BeginTime,
EndTime,
Creator,
CreateTime,
Updator,
UpdateTime
from dbo.tbQueueNewsAffiche where NewsAfficheId=@NewsAfficheId order by BeginTime
end

对应DAL代码:

/// <summary>
/// 查询所有排队新闻
/// </summary>
/// <returns></returns>
public List<QueueNewsAffiche_NewsInfo> GetList(int newsAfficheId)
{
IDataParameter[] paramArray = new IDataParameter[]{
Db.GetParameter("@NewsAfficheId",DbType.Int32,newsAfficheId)
}; List<QueueNewsAffiche_NewsInfo> list = null;
try
{
using (IDataReader reader = Db.ExecuteSPReader(ConnectionString, "PR_QueueNewsAffiche_GetAllNews", paramArray))
{
list = new List<QueueNewsAffiche_NewsInfo>();
while (reader.Read())
{
QueueNewsAffiche_NewsInfo newsInfo = new QueueNewsAffiche_NewsInfo();
IDataRecord rec = reader as IDataRecord; newsInfo.Id = Field.GetInt32(rec, "Id");
newsInfo.Content = Field.GetString(rec, "Content");
newsInfo.NewsAfficheId = Field.GetInt32(rec, "NewsAfficheId");
newsInfo.BeginTime = Field.GetDateTime(rec, "BeginTime");
newsInfo.EndTime = Field.GetDateTime(rec, "EndTime");
newsInfo.Creator = Field.GetString(rec, "Creator");
newsInfo.CreateTime = Field.GetDateTime(rec, "CreateTime");
newsInfo.Updator = Field.GetString(rec, "Updator");
newsInfo.UpdateTime = Field.GetDateTime(rec, "UpdateTime");
list.Add(newsInfo);
}
}
}
catch (System.Exception ex)
{
LogHelper.Error("查询时出错" + ex.ToString());
} return list;
}

根据id查询

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_GetNewsById] 脚本日期: 11/04/2013 13:44:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PR_QueueNewsAffiche_GetNewsById]
(
@Id int
)
AS
BEGIN
SET NOCOUNT ON; select *
from tbQueueNewsAffiche
where Id=@Id
END

对应DAL层代码:

/// <summary>
/// 根据id查询
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public QueueNewsAffiche_NewsInfo GetQueueNewsById(int id)
{ IDataParameter[] paramArray = new IDataParameter[] {
Db.GetParameter("@Id",DbType.Int32,id)
};
QueueNewsAffiche_NewsInfo newsInfo = null;
try
{
using (IDataReader reader = Db.ExecuteSPReader(ConnectionString, "PR_NewsAfficheQueue_GetNewsById", paramArray))
{
while (reader.Read())
{
newsInfo = new QueueNewsAffiche_NewsInfo();
IDataRecord rec = reader as IDataRecord; newsInfo.Content = Field.GetString(rec, "Content");
newsInfo.BeginTime = Field.GetDateTime(rec, "BeginTime");
} }
}
catch (System.Exception ex)
{
LogHelper.Error("查询排队新闻时出错{PR_NewsAfficheQueue_GetNewsById}" + ex.ToString());
}
return newsInfo;
}

存储过程中执行SQL语句:

USE [BookSale]
GO
/****** 对象: StoredProcedure [dbo].[SP_SaleBookCustomAddress_GetCustomAddressByUserIdList_1_19882] 脚本日期: 01/16/2014 15:30:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE procedure [dbo].[SP_SaleBookCustomAddress_GetCustomAddressByUserIdList_1_19882]
(
@UserIdList nvarchar(max)
)
as
begin
exec('select * from SaleBookCustomAddress where UserId in ('+@UserIdList+') and Status=1') end

DAL获取上面存储过程获得的内容:

/// <summary>
/// 根据多个UserId批量获取地址实体列表
/// </summary>
/// <param name="userIdList"></param>
/// <returns></returns>
public List<Entity.Activity.SaleBookCustomAddress> GetActivityRosterByUserIdList(string userIdList)
{
IDataParameter[] par = new IDataParameter[] {
AdoHelper.GetParameter("UserIdList",DbType.String ,userIdList )
}; List<SaleBookCustomAddress> rtn = new List<SaleBookCustomAddress>();
try
{
using (IDataReader reader = AdoHelper.ExecuteReader(this.DefaultConnectionString, CommandType.StoredProcedure, "SP_SaleBookCustomAddress_GetCustomAddressByUserIdList_1_19882", par))
{
while (reader.Read())
{
SaleBookCustomAddress address = new SaleBookCustomAddress();
address.UserId = Convert.ToInt64(reader["UserId"]); UserDataAccess userDB = new UserDataAccess();
Users user = userDB.GetUserNickname(new int[] { Convert.ToInt32(address.UserId) })[0];
if (user != null)
{
address.NickName = user.UserName;
}
else
{
address.NickName = "";
}
address.CustomName = Field.GetString(reader, "CustomName");
address.Region = Field.GetString(reader, "Region");
address.Province = Field.GetString(reader, "Province");
address.City = Field.GetString(reader, "City");
address.Street = Field.GetString(reader, "Street");
address.Postcode = Field.GetString(reader, "Postcode");
address.MobileNo = Field.GetString(reader, "MobileNo");
address.FullTelNum = Field.GetString(reader, "TeleArea") + "-" + Field.GetString(reader, "Telephone") + "-" + Field.GetString(reader, "TeleExt");
if (address.FullTelNum == "--")
{
address.FullTelNum = "";
}
else
{
if (string.IsNullOrEmpty(Field.GetString(reader, "TeleExt")))
{
address.FullTelNum = Field.GetString(reader, "TeleArea") + "-" + Field.GetString(reader, "Telephone");
}
}
address.LastUpdateTime = Field.GetDateTime(reader, "LastUpdateTime"); rtn.Add(address);
}
}
}
catch (Exception ex)
{
Log.LogException(ex);
}
return rtn;
}

零碎补充:

@AboutTheAuthor varchar(max),
@RMBOriginPrice decimal(18,2), /*表示一共18位数字,其中包括2位小数点(整数部分则为16位)*/ decimal详解>>
@AuthorName varchar(100)='', /*参数赋初值 */
@RecordCount int=0 output /*赋初值的输出变量 */
select @RecordCount=count(1) from SaleBook where companyid=17 AS /*表示下面的为存储过程主体部分*/ /*@@表示全局变量(内置系统变量)、获取最新的主键id select @@rowcount受影响的行数 */
SELECT @@identity exec(@sql+@where+' ORDER BY CreateTime DESC') /*执行sql语句*/ WITH Mem_SALEBOOK_Book AS /*WITH的用法*/
(
SELECT bookId
FROM bookView V
WHERE CompanyId in ( select Item from dbo.fn_Split(@CompanyId,',') )
and BookId= CASE @SearchType WHEN 'bookid' THEN @SearchValue ELSE BookId END /*CASE...WHEN语法 */
and BookName like CASE @SearchType WHEN 'bookname' THEN @SearchValue ELSE BookName END
) SELECT M.*, SC.CompanyName as CompanyName FROM
Mem_SALEBOOK_Book MM with (nolock)
inner join bookView M on MM.BookId=M.BookId
left join SaleCompany SC on M.CompanyId=SC.CompanyId

站内导航:
站外扩展:
SqlServer存储过程(增删改查)的更多相关文章
- NX二次开发-NX访问SqlServer数据库(增删改查)C#版
版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...
- 用C# sqlserver实现增删改查
using System.Data;using System.Data.SqlClient;//先打开两个类库文件SqlConnection con = new SqlConnection(); // ...
- SpringMVC+SpringJdbc+SQLServer+EasyUI增删改查
前言 前天用SpringJdbc连接了一把SQLServer,早上起来用SpringMVC+SpringJdbc+EasUI写了个增删改查的demo,主要是熟悉下SpringMVC相关知识点,如vie ...
- SQLServer数据库增删改查
一.数据库定义 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.数据库的操作分为两种形式:一种是直接在数据库管理工具图形化界面进行操作:一种是使用数据库脚本进行操作,数据库脚本可 ...
- 连接SQLServer的增删改查方法代码
在Visual C++中用ADO进行数据库编程 1. 生成应用程序框架并初始化OLE/COM库环境 创建一个标准的MFC AppWizard(exe)应用程序CADOConnection,然后在使用A ...
- sqlserver的增删改查
select*from shuiguo 查询表 且小于等于7的范围) select distinct name from shuiguo--去除重复,只针对一列 select * from shui ...
- C#学习笔记(3)——操作sqlserver数据库增删改查
说明(2017-5-25 16:29:35): 1. VS2010,视图->服务器资源管理器->数据连接->右键添加连接->服务器名(本机可以用点)->选择数据库-> ...
- C#中对sqlserver进行增删改查操作(简单易懂)
1.添加引用using System.Data;using System.Data.SqlData; 2.建立于数据库的连接,建议将它做成一个方法,方便多次利用.string sqlconnectio ...
- 关于MVC工厂模式的增删改查sql存储过程
这里MVC中用到了反射,工厂,泛型,接口 在搭建框架的时候,除了MVC的三层以外,还有泛型的接口层和工厂层 下面是dal层调用sql存储过程,增删改查,dal层继承了接口层,实现了接口层里面的方法 1 ...
- 设置Sql server用户对表、视图、存储过程、架构的增删改查权限
根据数据库Schema限制用户对数据库的操作行为 授予Shema dbo下对象的定义权限给某个用户(也就是说该用户可以修改架构dbo下所有表/视图/存储过程/函数的结构) use [Your DB N ...
随机推荐
- 每日一问(常用的集合接口和类有哪些【二】)—最常用的集合ArrayList类
本人在曾经的数年编程生涯中,使用的最多的就是ArrayList类了,原因也非常简单.ArrayList类可以是最直接符合集合这一概念的类了,当然这种说法只是我的个人之见.ArrayList可以说是一个 ...
- MySQL/Oracle/SQL Server默认端口、JDBCdriver、Url
sqlserver默认端口号为:1433URL:"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname"DRI ...
- Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数 区别(完全解析)
原文地址:http://blog.csdn.net/caroline_wendy/article/details/23383995 还有一篇:http://blog.csdn.net/carolzha ...
- linux 批量更改文件名 rename 命令
rename 的典型应用: # rename $1 $2 $3# $1: 要被取代的關鍵字# $2: 新的關鍵字# $3: 檔名符合這個規則的才取代 # 把 IMG001.jpg, IMG002.jp ...
- MT【122】一个重要的不平凡的无穷级数
求证:$1+\dfrac{1}{4}+\dfrac{1}{9}+\cdots +\dfrac{1}{n^2}+\cdots = \dfrac{\pi^2}6$. 解答:考虑$$\dfrac{\sin ...
- 【刷题】BZOJ 2301 [HAOI2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- BZOJ4919 [Lydsy1706月赛]大根堆 【dp + 启发式合并】
题目链接 BZOJ4919 题解 链上的\(LIS\)维护一个数组\(f[i]\)表示长度为\(i\)的\(LIS\)最小的结尾大小 我们可以用\(multiset\)来维护这个数组,子树互不影响,启 ...
- 洛谷 P1446 [HNOI2008]Cards 解题报告
P1446 [HNOI2008]Cards 题目描述 小春现在很清闲,面对书桌上的\(N\)张牌,他决定给每张染色,目前小春只有\(3\)种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun ...
- 【bzoj2002】 Hnoi2010—Bounce 弹飞绵羊
http://www.lydsy.com/JudgeOnline/problem.php?id=2002 (题目链接) 题意 数轴上${n}$个点,每个点有一个权值${a_i}$,如果到达这个点,接下 ...
- WEB入门.七 CSS布局模型
学习内容 标准文档流 流动模型(flow model) 浮动模型(float model) CSS基本布局 能力目标 理解标准文档流 使用流动模型实现页面布局 使用浮动模型实现页面布局 掌握常用CSS ...