C# 调用带输入输出参数的存储过程
//调用存储过程执行类似于
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上即可
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sql语句执行的时候要先编译,然后执行。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
优点:
允许模块化程序设计,只需创建一次存储过程,并将其存储在数据库中,以后可在程序中调用该过程任意次
执行效益高
减少网络流量
可保证数据的安全性和完整性
分类:
系统存储过程 以sp_开头并存放在master数据库中
扩展存储过程 以xp_开头
用户自定义存储过程 用户自己定义
这里重点介绍用户自定义存储过程
自定义存储过程又分为两种:带参数的存储过程及不带参数的存储过程
带参数的存储过程又分为:带输入参数的存储过程和带输出参数的存储过程
存储过程语法规则:
create proc[edure](关键字,中括号内为可选内容) procName(存储过程名字)
@参数 数据类型=默认值, (输入参数)
@参数 数据类型 output(输出参数必须加上output)
as
sql语句
go
删除存储过程
创建的存储过程位于sysobjects表中
if exists(select * from sysobjects where name='存储过程名字')
drop proc 存储过程
go
存储过程执行使用关键字exec
执行无参存储过程
exec 存储过程名
执行输入参数存储过程
如:
exec 存储过程 参数值
执行输出参数的存储过程要求定义变量用来接受存储过程的返回值
declare @count int (数据类型需和存储过程中输出参数类型一致)
exec 存储过程 输出参数 output (output不能少)
print 输出参数 (用于显示输出参数)
创建无参的存储过程
查询student表中所有记录
if exists(select * from sysobjects where name='proc_select')
drop proc proc_select
go
create proc proc_select
as
select * from student
go
执行存储过程
exec proc_select 效果类似于 select * from student
创建带输入参数的存储过程
比如根据用户名查询用户密码
if exists(select * from sysobjects where name='proc_username')
drop proc proc_username
go
create proc proc_username
@username varchar(50)
as
select pwd from userinfo where username=@username
执行存储过程:
exec proc_username admin (或@username=admin)
创建带输出参数的存储过程执行时需要自定义一个变量用来接受存储过程返回的值
比如查询userinfo表中有多少条记录
if exists(select * from sysobjects where name='proc_num')
drop proc proc_num
go
create proc proc_num
@count int output (output不能少,不能赋默认值)
as
select @count=count(*) from userinfo
go
执行存储过程
declare @n int
exec proc_num @n output (output不能少)
go
print @n 显示表中有多少条记录
注:定义参数时多个参数间用逗号隔开而不是分号最后一个参数逗号可省略
C# 调用带输入输出参数的存储过程的更多相关文章
- c#调用带输出参数的存储过程
sql server中编写一个存储过程: CREATE PROCEDURE ProGetPWD @username varchar(20), @password varchar(20) OUTPUT ...
- Oracle带输入输出参数的存储过程
(一)使用输入参数 需求:在emp_copy中添加一条记录,empno为已有empno的最大值+1,ename不能为空且长度必须大于0,deptno为60. 创建存储过程: create or rep ...
- sql server 带输入输出参数的分页存储过程(效率最高)
create procedure proc_page_withtopmax( @pageIndex int,--页索引 @pageSize int,--每页显示数 @pageCount int out ...
- 用exec调用带有output输出参数的存储过程
用exec调用带有output输出参数的存储过程,想要得到输出参数的值,必须在调用参数后面加output关键字,如: declare @value int exec up_test 2,3,@v ...
- Oracle使用jdbc调用带游标参数的存储过程
package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...
- 创建有输出参数的存储过程并在c#中实现DataGridView分页功能
不足之处,欢迎指正! 创建有输出参数的存储过程 if exists(select * from sysobjects where name='usp_getPage1') drop procedure ...
- C#中调用存储过程:带输入输出参数
using (SqlConnection conn = new SqlConnection(this.GetConnectionString(this.WMPDBName))) { SqlComman ...
- C# 调用带有输出参数的分页存储过程
一.创建带有输出参数的分页存储过程 use StudentMISDB go select * from Course alter table Course go --update Course set ...
- c#调用Mysql带参数的存储过程
1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过 ...
随机推荐
- 检测客户端系统-PHP
if(isset($_SERVER['HTTP_USER_AGENT'])) { $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); $clie ...
- python十个博客
1.首先第一个肯定是毋庸置疑的Planet Python这是最出名的python博客其中之一,快去看看,我希望你能找到对你有用的东西,昨天它还更新了呢! 2.第二个博客是lucumr,博主是flask ...
- Linux 如何杀死僵尸进程
问题描述: shell > top top - :: up days, :, user, load average: 0.23, 0.81, 1.07 Tasks: total, running ...
- 【Rsync项目实战一】备份全网服务器数据
目录 [Rsync项目实战]备份全网服务器数据 [企业案例] 1.1 环境部署 1.2 开始部署backup服务器:Rsync服务端过程: 1.3 开始部署nfs01服务器:Rsync客户端过程: [ ...
- spring MVC模式拦截所有入口方法的入参出参打印
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; im ...
- Loadrunner11无法在win7 64位上启用ie解决办法
Loadrunner11无法在win7 64位上启用ie解决办法 1.loadrunner11在win7 64位上默认启用的是32位的那个IE浏览器,路径:C:\Program Files (x86) ...
- 洛谷 P2899 [USACO08JAN]手机网络Cell Phone Network
题目描述 Farmer John has decided to give each of his cows a cell phone in hopes to encourage their socia ...
- 洛谷P1186 玛丽卡 spfa+删边
洛谷P1186 玛丽卡http://blog.csdn.net/huihao123456/article/details/73414139题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. ...
- Python 与 Javascript 比较
最近由于工作的需要开始开发一些Python的东西,由于之前一直在使用Javascript,所以会不自觉的使用一些Javascript的概念,语法什么的,经常掉到坑里.我觉得对于从Javascript转 ...
- nginx内置变量详解-乾颐堂
nginx的配置文件中可以使用的内置变量以美元符$开始,也有人叫全局变量.其中,部分预定义的变量的值是可以改变的. $arg_PARAMETER 这个变量值为:GET请求中变量名PARAMETER参数 ...