一、执行存储过程
1、执行insert存储过程
执行insert、delete、update存储过程与执行insert、delete、update语句一样,都是使用Execute()
CREATE PROCEDURE [dbo].[proc_AddSysUser01]
-- Add the parameters for the stored procedure here
@Name nvarchar(50),
@Phone nvarchar(50)
AS
BEGIN
--SET NOCOUNT ON;
-- Insert statements for procedure here
insert into Sys_User values(@Name,@Phone,'耶路撒冷',GETDATE())
END
GO
[HttpPost]
public ActionResult InsertProcedure(FormCollection collection)
{
try
{
#region 执行insert存储过程
using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
{
int result = connection.Execute("proc_AddSysUser01", new
{
Name = collection["name"],
Phone = collection["phone"]
}, commandType: CommandType.StoredProcedure);
}
#endregion
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View();
}
}
2、执行select存储过程
执行select存储过程与执行select语句一样,都是使用Query<Sys_User>()
CREATE PROCEDURE [dbo].[proc_GetSysUser]
-- Add the parameters for the stored procedure here
@Id int,
@Name nvarchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
select * from Sys_User where Id<@Id and Name like '%'+@Name+'%'
END
GO
public ActionResult SelectProcedure(int id, string name)
{
try
{
#region 执行select存储过程
using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
{
List<Sys_User_bak> userList = connection.Query<Sys_User_bak>("proc_GetSysUser", new
{
Id = id,
Name = name
}, commandType: CommandType.StoredProcedure).AsList();
}
#endregion
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View();
}
}
二、in操作
public ActionResult DetailsSome(int id, FormCollection collection)
{
try
{
#region in操作
using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
{
List<Sys_User_bak> userList = connection.Query<Sys_User_bak>("select Id,Name,Phone,Address from Sys_User_bak where Id in @Id and Name like @Name", new
{
Id = new string[] { "1", "2", "12" },
Name = "%" + collection["name"] + "%"
}).AsList();
}
#endregion
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View();
}
}
三、执行多条select语句
public ActionResult GetSomeTable(FormCollection collection)
{
try
{
#region 一次查询多张表
using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
{
string sql = "select * from Sys_User_bak;select * from Sys_User_aaa;";
SqlMapper.GridReader reader = connection.QueryMultiple(sql);
var userBakList = reader.Read<Sys_User_bak>();
var userAaaList = reader.Read<Sys_User_aaa>();
reader.Dispose();
}
#endregion
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View();
}
}