C#中调用输入输出参数的存储过程
2009-03-29 16:20
609 查看
有关存储过程的介绍大家想必也不陌生了吧,大家可以参考《浅谈存储过程》一文。这里不做介绍。
今天要介绍的是在C#里如何调用带输入输出参数的存储过程,譬如实现简单的登陆功能、根据用户输入的用户名、用户密码及用户权限实现登陆。这里充当输入参数的有:用户名、用户密码、登陆权限。充当输出参数的就是在数据库里面根据输入参数的信息查询数据库中是否有记录,具体来说就是记录的行数。
数据库中的存储过程构建代码:
Code
数据访问层代码
Code
至于业务逻辑层及表示层这里就不做介绍了,想必大家都知道该如何写了.
注:这里补充点有关清空DataGradeView中所有数据de思路方法
Code
今天要介绍的是在C#里如何调用带输入输出参数的存储过程,譬如实现简单的登陆功能、根据用户输入的用户名、用户密码及用户权限实现登陆。这里充当输入参数的有:用户名、用户密码、登陆权限。充当输出参数的就是在数据库里面根据输入参数的信息查询数据库中是否有记录,具体来说就是记录的行数。
数据库中的存储过程构建代码:
Code
1use Hotel --数据库名 2if exists(select * from sysobjects where name='proc_userinfo')--判断是否存在存储过程 3drop proc proc_userinfo --若存在删除此存储过程 4go 5--创建存储过程 6create proc proc_userinfo 7@username varchar(50),--输入参数 8@pwd varchar(50),--输入参数 9@grade varchar(20),--输入参数 10@count int output --输出参数output不能少 11--sql语句 12as 13select @count=count(*) from userinfo where username=@username and pwd=@pwd and @grade=grade 14go 15 16 17执行存储过程 18declare @n int 19exec proc_userinfo admin,123,管理员,@n output 20--output不能少 21print @n 22go
数据访问层代码
Code
1//调用存储过程执行类似于 2//select count(*) from userinfo where username=username and pwd=pwd and grade=grade 3//接受 3个参数分别用来表示用户名、用户密码、用户权限 4public bool GetUserinfo(string username,string pwd,string grade) 5 { 6 //获取连接字符串 7 private bool connstring = ConfigurationManager.ConnectionStrings["connstring"].Tostring; 8 int n = 0;//查询后返回的行数保存存储过程中的输出参数 9 //创建连接对象 using代码片段好处在于离开作用域后立刻从内存中释放对象 10 using (SqlConnection con=new SqlConnection(connstring)) 11 { 12 con.Open();//打开数据库连接 13 using (SqlCommand cmd=new SqlCommand("proc_userinfo",con)) 14 { 15 //什么作用不记得了只记得调用存储过程该语句不能少 16 cmd.CommandType = CommandType.StoredProcedure; 17 //添加存储过程输入输出参数类型及输入参数值 18 cmd.Parameters.Add("@username", SqlDbType.VarChar, 50).Value=username; 19 cmd.Parameters.Add("@pwd", SqlDbType.VarChar, 50).Value=pwd; 20 cmd.Parameters.Add("@grade", SqlDbType.VarChar, 50).Value=grade; 21 cmd.Parameters.Add("@count", SqlDbType.Int); 22 cmd.Parameters["@username"].DbType = DbType.String; 23 //指定参数类型是输入参数还是输出参数 24 cmd.Parameters["@username"].Direction = ParameterDirection.Input; 25 cmd.Parameters["@pwd"].DbType = DbType.String; 26 //指定参数类型是输入参数还是输出参数 27 cmd.Parameters["@pwd"].Direction = ParameterDirection.Input; 28 cmd.Parameters["@grade"].DbType = DbType.String; 29 //指定参数类型是输入参数还是输出参数 30 cmd.Parameters["@grade"].Direction = ParameterDirection.Input; 31 cmd.Parameters["@count"].DbType = DbType.Int32; 32 //指定参数类型是输入参数还是输出参数 33 cmd.Parameters["@count"].Direction = ParameterDirection.Output; 34 //执行存储过程 此处类似于查询语句 35 cmd.ExecuteScalar(); 36 //接受执行存储过程后的返回值 37 n = (int)cmd.Parameters["@count"].Value; 38 //根据返回值判断数据库中是否存在对应用户名密码及用户权限的记录 39 if (n==1) 40 { 41 return true; 42 } 43 else 44 { 45 return false; 46 } 47 } 48 } 49 }
至于业务逻辑层及表示层这里就不做介绍了,想必大家都知道该如何写了.
注:这里补充点有关清空DataGradeView中所有数据de思路方法
Code
1//用dataGradeView.DataSource dataGradeView的数据源创建一个DataTable 对象 需要强转成DataTable 2 3 DataTable dt=(DataTable )dataGradeView.DataSource; 4 //dataGradeView为具体的dataGradeView 5 6 dt.Rows.Clean(); //删除表中的行 7 8 dataGradeView.DataSource=dt; 9//再把dt绑定到dataGradeView上即可 10
相关文章推荐
- C#中调用存储过程:带输入输出参数
- C#调用带输入输出参数的存储过程
- 存储过程输出参数:C#中调用输入输出参数的存储过程
- C#中调用存储过程:带输入输出参数
- C#调用带输入输出参数的存储过程
- c#调用带输出参数的存储过程
- 存储过程输出参数、返回值、返回表及C#调用
- Java调用SQL存储过程 输入输出参数(转)
- java调用输入、输出参数为对象的存储过程
- 关于C#调用存储过程,带输出参数,存储过程
- C#里调用带输出参数的存储过程
- MyBatis之四:调用存储过程含分页、输入输出参数
- 使用ADO.NET对象调用存储过程的输入和输出参数
- 存储过程有输出参数,在c#中用nhibernate调用存储过程时,如何才能获取到一个结果集和这个输出参数呢?
- 带输出参数的存储过程的使用及在C#中调用问题
- c#调用带输出参数的存储过程
- ASP调用存储过程:有输入参数和输出参数的存储过程
- ThinkPHP5 既有输入参数又有输出参数的存储过程该如何调用 - 02
- 调用带输入和输出参数的存储过程
- 带输出参数的存储过程的使用及在C#中调用问题