• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[网络收集]ASP.NET中调用存储过程带(输入/输出)参数和返回值的一些常用的例子 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有些初学者在调用存储过程时容易出现一些错误,下面我就不同的返回参数而言举个用户登录常用的例子做一些简单的讨论:(由简单--->>深入)

创建数据库:(Student)
创建用户表:(Users)
use Student
go

create table Users
(
id int identity(1, 1) primary key,
name nvarchar(20) not null,
password nvarchar(20)   not null
)

1.带输入参数的存储过程
create procedure proc_login
        @name nvarchar(20),
        @password nvarchar(20)
as
begin
select *
from Users
where name = @name and password = @password
end
go

调用带输入参数的存储过程
//连接数据库的字符串
private string connectionString = ConfigurationManager.AppSetting["connectionString"];

//数据层的登录方法
public static User Login(string name, string password) {
User user = null;
using (SqlConnection conn = new SqlConnection(connectionString)) {
   SqlCommand cmd = new SqlCommand("proc_login", conn);
   cmd.CommandType = CommandType.StoredProcedure; //指定调用存储过程
   //指定参数
   cmd.Parameters.Add("@name", SqlDbType.nvarchar, 20).Value = name;
   cmd.Parameters.Add("@password", SqlDbType.nvarchar, 20).Value = password;
   conn.open();
   using(SqlDataReader sdr = cmd.ExecuteReader()) {
    if(sdr.Read()) {
     user = new User((int)sdr["id"], sdr["name"].ToString(), sdr["password"].ToString());
    }
   }
   conn.Close();
}
return user;
}

 

 

2.带输入输出参数的存储过程
create procedure proc_login
        @name nvarchar(20),
        @password nvarchar(20),
@message nvarchar(50) output //用于输出用户登录的信息
as
begin
//判断用户名是否存在
if exists (select * from Users where name = @name)
begin
   //判断密码是否正确
   select * from Users where name = @name and password = @password
   //返回的行数〉0
   if @@rowcount > 0
   begin
    set @message = '登录成功!'
   end
   else
   begin
    set @message = '密码错误!'
   end
end
else
begin
   set @message = '用户名不存在!'
end
//在过程中如果有错误
if @@error <> 0
begin
   set @message = '登录失败!'
end
end
go

调用带输入输出参数的存储过程
//数据层的登录方法
public static User Login(string name, string password, out string message) {
User user = null;
using (SqlConnection conn = new SqlConnection(connectionString)) {
   SqlCommand cmd = new SqlCommand("proc_login", conn);
   cmd.CommandType = CommandType.StoredProcedure; //指定调用存储过程

   //指定参数
   cmd.Parameters.Add("@name", SqlDbType.nvarchar, 20).Value = name;
   cmd.Parameters.Add("@password", SqlDbType.nvarchar, 20).Value = password;
   SqlParameter mes = new SqlParameter("@message", SqlDbType.nvarchar, 50);
   mes.Direction = ParameterDiraction.Output;
   cmd.Add(mes);

   conn.open();
   using(SqlDataReader sdr = cmd.ExecuteReader()) {
    message = mes.Value.ToString();
    if(sdr.Read()) {
     user = new User((int)sdr["id"], sdr["name"].ToString(), sdr["password"].ToString());
    }
   }
   conn.Close();
}
return user;
}

 

3.带返回值得存储过程
create procedure proc_login
        @name nvarchar(20),
        @password nvarchar(20)
as
declare @message nvarchar(50) output //用于返回用户登录的信息
begin
//判断用户名是否存在
if exists (select * from Users where name = @name)
begin
   //判断密码是否正确
   select * from Users where name = @name and password = @password
   //返回的行数〉0
   if @@rowcount > 0
   begin
    set @message = '登录成功!'
   end
   else
   begin
    set @message = '密码错误!'
   end
end
else
begin
   set @message = '用户名不存在!'
end
//在过程中如果有错误
if @@error <> 0
begin
   set @message = '登录失败!'
end
return @message
end
go

调用带返回值得存储过程
//数据层的登录方法
public static User Login(string name, string password, out string message) {
User user = null;
using (SqlConnection conn = new SqlConnection(connectionString)) {
   SqlCommand cmd = new SqlCommand("proc_login", conn);
   cmd.CommandType = CommandType.StoredProcedure; //指定调用存储过程

   //指定参数
   cmd.Parameters.Add("@name", SqlDbType.nvarchar, 20).Value = name;
   cmd.Parameters.Add("@password", SqlDbType.nvarchar, 20).Value = password;
   SqlParameter mes = new SqlParameter("@message", SqlDbType.nvarchar, 50);
   mes.Direction = ParameterDiraction.ReturnValue;   //注意这里指定返回值
   cmd.Add(mes);

   conn.open();
   using(SqlDataReader sdr = cmd.ExecuteReader()) {
    message = mes.Value.ToString();
    if(sdr.Read()) {
     user = new User((int)sdr["id"], sdr["name"].ToString(), sdr["password"].ToString());
    }
   }
   conn.Close();
}
return user;
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET可編輯嵌套DataGrid(Editable Nested DataGrid)发布时间:2022-07-10
下一篇:
ASP.NETMVC学习发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap