ado连接存储过程 --张国亮总结心得第一季

来源:互联网 发布:知乎网站的优缺点 编辑:程序博客网 时间:2024/05/11 02:01

向回传参:
alter proc usp_AddTow
@number1 int=200,
@number2 int=1000,
@sumTow int output--向外传值
as
begin
set @sumTow=@number1+@number2
end
定义个变量用来接收参数@sumtow传回来的值
declare @var int
exec usp_AddTow @number2=500,@number1=300,
@sumtow=@var output
print @var
--- exec usp_Addtow
---------------
建立一个自定义存储过程:create proc usp_promoteGrade
定义个分数线的变量:@passline int--这样就可以自动更改分数线了
as
begin
一:计算总人数
declare @count2 int =(select count(*)from score)
二:
1定义一个变量就收不及格的人数:declare @loster int=(select count(*) from Score where english<@passline)
2得到score表中一半的人数:declare @harfcount int =floor(@count2/2.0)
3循环如果不及格人数多余一半就给不及格的人得分数加2:while @loster>@harfcount
begin
4加分:update score set english=english+2 where english<@passline
5重新算不及格人数:set @loster=(select count(*) from Score where english<@passline)
end
end
exec usp_promoteGrade 40
----------------
写存储过程:目的可以返回值判断是否能成功
存储过程看登陆是否正确(需要参数,第三个参数(布尔类型))
@uname varchar(50),
@password varchar(50),
@result bit output--是用来返回值的,存储用户登录是否成功,1--true,0--flase
as
begin
建立个变量用来接收返回值:declare @count int
1查个数:select count(*) from 表 where fusername=@Uname
and
fpassword=@password
if @count>0
begin
set @result=1
end
else
begin
set @result=0
end
end
declare @r bit
exec usp_Login ‘’,‘’,@result=@r output
print @r
前两个参数用来向数据库里传值,第三个参数用来返回验证结果(这就是存储过程的作用)
在ado中:
连接字符串:“data source=用户数据库名称;initial catalog=“数据库名”;user id=sa;password=密码”
int r=cmd.executenonquery 成功r=1失败r=0
。。。。。。。。。。
1:在vs中调用(cmd.commandText="存储过程名")
2://执行sql语句和执行存储过程最大的的区别!需要设置个commadtype:
cmd.commandText=commandType.storeprocedure;//执行存储过程
3:传参数:sqlparameter prm1=new sqlparameter("@uname",username.text)
System.Data.SqlDbType.Bit
添加参数:cmd.parameters.add(par1)
4:par3.direction=parameterdirection.output;//指示出第三个参数是向外传的

int r=cmd.excutenoquery//如果执行的是insert,update,delete,executenonqurery()返回值为1或0,除此之外执行的内容返回值都是-1(执行存储过程返回-1)
执行之后bool b=convert.toboolean( par3.value)
if(b)
{
成功
}
else
{
失败
}

--------------------------------------------------------------
ADO
string str =data source=服务器名称,initial catalog=数据库名 user id=sa password=7777777
注意在cmd.commandtext=
cmd.executenonquery();
cmd.commandtype:1:默认text,2:表3:存储过程//在ado中执行存储过程的区别


------从数据库向页面导入数据或动态生成table
1:建一个类写属性就是要得到列(以属性的形式写)
建个泛型存储值
2:连数据库:用reader
3:赋值:
reader.isdbnull(如果是null返回问号后面的,如果不是返回:后面内容 ?string.empty:reader.getordinal(“cname”))
定义泛型累加类中的东西list.add()

4:datagridview1.datasource=list;

---------分页
需要两个参数
页显示的条数;
第几页;


------在ado中使用事务
连接
sqlTransaction tran=conn.BeginTransaction();//建立事物
sql语句
建command:把事物给命令cmd.Transaction=tran;
int r=cmd.execut
tran.commit();
label1.text=“成功了”+r.tostring()
+“几条记录”
tran.rollBack()
lable1.Text="回滚了"+r.tostring()+"几条记录"

---以上功能在控制台中运行(写在main函数中)


-------触发器(作用:自动化操作)特殊的存储过程
dml触发器inserted表与select表