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 ③ 这个存储过 ...
随机推荐
- html中的一些常用的样式标签
html中的一些常用的样式标签 <p>这里是文本,<mark>高亮</mark></p> <strong>加粗,加重语气</stron ...
- cento7.3下玩转sphinx
cento7.5下玩转sphinx 1 安装依赖文件 yum install postgresql-libs unixODBC 2 下载 wget http://sphinxsearch.com/fi ...
- select to object 查询方法
(1)Select() (2)Where() (3)OrderBy()
- linux条件变量
条件变量用于线程之间的通信,和互斥锁一起使用.条件变量用于及时通知等待的线程条件的变化,使线程不至于错过变化. 考虑下面的情况,有AB两个线程对index这个全局变量进行++,一个线程C用于判断,in ...
- C++builder 递归获取继承基类根类
TClass ClassRef; ListBox1->Clear(); ClassRef = Sender->ClassType(); while (ClassRef != NULL) { ...
- 【310】◀▶ Python 日期和时间
参考: python 时间日期计算 Python 日期和时间(菜鸟教程) 8.1. datetime — Basic date and time types python中datetime模块中dat ...
- iOS布局之Auto Layout
学习资源: <iOS6核心编程>自动布局部分 <iOS6范例经典>自动布局部分 Tutorial: iOS 6 Auto Layout versus Springs and S ...
- ubuntu系统中出现mysql数据库无法启动报错2002该怎么处理,具体报错信息如正文所示
python@ubuntu:~$ mysql -uroot -pmysqlmysql: [Warning] Using a password on the command line interface ...
- 移动端web页面input限制只能输入数字
<input type="number" pattern="[0-9]*" /> 如上所示,在安卓端设置input类型为number,可限制键盘只输 ...
- Linux实战教学笔记15:磁盘原理
第十五节 磁盘原理 标签(空格分隔): Linux实战教学笔记 1,知识扩展 非脚本方式的一条命令搞定批量创建用户并设置随机10位字母数字组合密码. 1.1 sed的高级用法 [root@chensi ...