参数化命令相关知识点之==================防止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

 

   

posted @ 2016-04-13 15:28  葉子。  阅读(454)  评论(1编辑  收藏  举报