参数化命令相关知识点之==================防止SQl的注入

一: 使用参数化命令查询DAL类:
 public DataTable StudentDAL(string name,string gender)
 {
 string str="连接字符串";
//使用Using的稀少资源的释放
using(sqlconnection con=new sqlconnection(str))
 {
 string sql="select * from stdent where studentName=@name and Gender=@gender";

 sqlcommand com=new sqlcommand();
 sqlparameter[] par=
 {
 new sqlparameter=("@name",name),
 new sqlparameter=("@gender",gender); 
};
 com.parameters.addRange(par); 

sqldataadapter da=new sqldataadapter(com);

 dataset dt=new dataset();
 da.Fill(dt);
 return dt.Tables[0];
 } 
}
 
 

 

二:在C#中调用带输入参数的存储过程
 
--创建存储过程
 create proc usp_selectStudent
 @studentName nvarchar(10)
 as
 select * froom student where StudentName=@studentNanme
 go
 
DAL类
 public DataTable GetStudentInFo(string name)
 {
 string str="连接字符串"; 
using(sqlconnection con=new sqlconnection(str))
 { 
string sql="usp_selectStudent"; 

sqldataadapter da=new sqldataadapter(sql,con);
 sqlcommand com=da.selectcommand;
 //指定字符串为存储过程
com.CommandType=CommandType.StoredProcedure;
 sqlparameter par=new sqlparameter=("@name",name);
 com.parameter.add(par);
 dataset dt=new dataset();
 da.Fill(dt);
 return dt.Tables[0];

 } 
}
三: 在C#中调用带输出参数的存储过程
 
--创建存储过程
 create proc usp_selectstudentCount
 @name nvarchar(10)
 @Gender nvarchar(10) output
 as
 select @Gender=count(*) from student where studentName=@name;
 select * froom student where studentName=@name;
 go
 
DAL类
 public DataTable GetStudentCount(string name,string Gender)
 {
 string str="连接字符串"; 
using(sqlconnection con=new sqlconnection(str))
 { 
string usp_selectstudentCount
 sqldataadapter da=new sqldataadapter(sql,con);
 sqlcommand com=da.selectCommand;

 com.CommandType=CommandType.StoredProcedure;
 sqlparameter [] pa=
 {
 new sqlparameter("@name",name),
 //设置为输出参数
new sqlparameter("@Gender",sqlDbType.nvarchar,10)
 }
 //设置最后一个参数的输出 方向
pa[pa.length-1].Direction=ParameterDiraction.OutPut;
 
com.parameter.addRange(pa);
 string count=pa[pa.length-1].value.toString();
 dataset dt=new dataset();
 da.Fill(dt);
 return Table dt.Table[0];
 } 
}

 补充一下Using的语法:

using (类型 对象名 = new 类型(参数列表))
{
    //……
    //……
}

 

参数化命令— SqlParameter

 

   

转载于:https://www.cnblogs.com/yejiaojiao/p/5387329.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值