cunchuguocheng

--事务
ACID特性:原子性、一致性、隔离性、持久性
--存储过程
1、系统存储过程
2、自定义存储过程
极其类似与C#中的方法。
1.没有参数没有返回值的存储过程
create proc usp_Helloworld
as
 begin
   print 'Hello world'
 end

exec usp_Helloworld
2、带参数的存储过程
--创建一个存储过程完成计算两个数的和
create proc usp_AddTwo
@number1 int,--参数
@number2 int
as
 begin
   print @number1+@number2
 end
--declare @a int=20
--declare @b int=40

exec usp_AddTwo 20,40
3、存储过程的参数过程
exec usp_AddTwo
alter proc usp_AddTwo
@number1 int=200,
@number2 int=1000
as
 begin
   print @number1+@number2
 end
exec usp_AddTwo 20,40 --结果60
exec usp_AddTwo --1200


exec usp_AddTwo
alter proc usp_AddTwo
@number1 int,
@number2 int=1000
as
 begin
   print @number1+@number2
 end
exec usp_AddTwo 200 --结果1200
--显性赋值
exec usp_AddTwo
alter proc usp_AddTwo
@number1 int=200,
@number2 int
as
 begin
   print @number1+@number2
 end
exec usp_AddTwo @number2=200 --结果1200

创建一个存储过程完成计算两个数的和,并返回两个数的和
存储过程返回值,可以使用“output参数”!!类似于C#中的参数
alter proc usp_AddTwo
@number1 int=200,
@number2 int=1000,
@sumTwo int output
as
 begin
   print @sumTwo=@number1+@number2
 end

exec usp_AddTwo
declare @var int
exect usp_AddTwo @number2=500,@number1=300,@sumTwo=@var output print @var
--存储过程的output参数是要得到返回值得,这里需要传进去一个同类型的变量来接收返回值

--如果english不及格的人超过半数,则给每个人增加2分,循环加,直到不及格的人数少于一半
use Shool
select * from Sore
updata Score set english=english-10 where english between 60 and 70
create proc usp_promoteGrade
@passline int
 as
  begin
    计算总人数
    declare @count int=(select count(*) from Score)
    计算英语不及格人数
    declare @loster int=(select count(*)from Score where english<@passline)
    declare @harfcount int=floor(@count2/2)
    while @harfcount<@loster
        begin
         update Score set english=english+2 where english<@passline
         set @loster=(select count(*)from Score where english<@passline)
        end
   end
exec usp_promoteGrade 60
----------------------------------------------
1.在ADO中使用存储过程
use UserDB1
select * from T_Users
create proc usp_login
@uname varchar(50),
@password varchar(50),
@result  bit output----布尔类型的参数,是用来返回值的,设置存储用户登录是否成功1---true,0------false
as
 begin
  set @count=( select count(*) from T_Users 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 @uname='admin321232','111',@r output
print @r
print @@servername

btnClick
{ string username=txtUserName.Text.Trin();
 string password=txtPassword.Text.Trin();


使用ADO连接数据库
Connection--SqlConnection--连接字符串
Command--SqlCommand
SqlParaneter
SqlDataReader
......

string connstr="Data Source=PC-20120907SDQU;Initial Catalog=UserDbl;User ID=sa; Password=admin"
using(SqlConnection conn=new SqlConnection();)
 {
conn.Open();
using(SqlCommand cmd= conn.CreateCommand();)
   {string sql="insert into T_Users(FuseName,Fpassword) values('王妃','555')"
cmd.CommandText=sql;
int r=cmd.ExecuteNonQuery();
Label1.Text=r.ToString();
-------------
string sp_name="usp_Login";
//执行sql语句和执行存储过程最大的区别!需要设置一个commandType
cmd.CommandText=CommandType.StoredProcedure;
cmd.CommandText=sp_name;
SqlParameter prm1=new SqlParameter("@uname",username);
SqlParameter prm2=new SqlParameter("@password",password);
SqlParameter prm3=new SqlParameter("@result",System.Data.SqlDbType.Bit);

cmd.Parameters.Add(prm1);
cmd.Parameters.Add(prm2);
cmd.Parameters.Add(prm3);
prm3.Direction=ParameterDirection.Output;

//int r=cmd.ExecuteNonQuery();
//object obj=cmd.ExecuteNonQuery();
bool b=Converrt.ToBoolean(prm3.value);
if(b)
{
Label2.Text="登录成功";
}
else
{
Label2.Text="登录失败";
}
    }
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值